#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<vector> #include<cmath> usingnamespace std; #define ll long long #define ri int #define int long long
char buf[1 << 20], *p1, *p2; #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)?EOF: *p1++) template <typename T> inlinevoidread(T &t){ ri v = getchar();T f = 1;t = 0; while (!isdigit(v)) {if (v == '-')f = -1;v = getchar();} while (isdigit(v)) {t = t * 10 + v - 48;v = getchar();} t *= f; } template <typename T,typename... Args> inlinevoidread(T &t,Args&... args){ read(t);read(args...); }
constint N = 5e5 + 10;
structpoi { int x,y; }p[N];
int dx,dy,n,m,sum[2010][2010],ma[2010][2010];
voidsolve(int qwq){ int ans = 0,posx,posy; for (int j = 1;j <= dy;++j) { for (int i = 1;i <= dx;++i){ int x = i + j - 1,y = i-j + dy; int x1 = max(1ll,x - qwq),x2 = min(dx + dy - 1,x + qwq ); int y1 = max(1ll,y - qwq),y2 = min(dx + dy - 1,y + qwq); if (sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1 - 1][y1 - 1] > ans) { ans = sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1 - 1][y1 - 1]; posx = i,posy = j; } elseif (sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1 - 1][y1 - 1] == ans) { if (posy > j) { posx = i,posy = j; } elseif (posy == j && posx > i) { posx = i,posy = j;
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<vector> #include<cmath> usingnamespace std; #define ll long long #define ri int
char buf[1 << 20], *p1, *p2; #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)?EOF: *p1++) template <typename T> inlinevoidread(T &t){ ri v = getchar();T f = 1;t = 0; while (!isdigit(v)) {if (v == '-')f = -1;v = getchar();} while (isdigit(v)) {t = t * 10 + v - 48;v = getchar();} t *= f; } template <typename T,typename... Args> inlinevoidread(T &t,Args&... args){ read(t);read(args...); }
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<vector> #include<cmath> usingnamespace std; #define ll long long #define ri int
char buf[1 << 20], *p1, *p2; #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)?EOF: *p1++) template <typename T> inlinevoidread(T &t){ ri v = getchar();T f = 1;t = 0; while (!isdigit(v)) {if (v == '-')f = -1;v = getchar();} while (isdigit(v)) {t = t * 10 + v - 48;v = getchar();} t *= f; } template <typename T,typename... Args> inlinevoidread(T &t,Args&... args){ read(t);read(args...); }
constint N = 1e6+10; constint K = 330;
int f[N],n; bool road[N][K];
structnode { int v,w,typ,num; friendinlinebooloperator < (node a,node b) { return a.v < b.v; } }a[K];
signedmain(){ //freopen("fuck.txt","w",stdout); //freopen("qwq.txt","r",stdin); int $ = 0; int tot = 0,cnt = 2; n = 1000000; for (int i = 2,sum = 1;sum <= n;i ++) { //printf("%d\n",sum); sum += i * i; a[++tot].v = sum;a[tot].typ = 1;a[tot].num = i; } for (int i = 3,sum = 1;sum <= n;i += 2) { //printf("%d\n",sum); sum += i * i; a[++tot].v = sum;a[tot].typ = 2;a[tot].num = i; } for (int i = 4,sum = 4;sum <= n;i += 2) { sum += i * i; a[++tot].v = sum;a[tot].typ = 2;a[tot].num = i; //printf("%d\n",sum); } //puts("here"); //printf("%d\n",tot); sort(a+1,a+1+tot); memset(f,0x3f,sizeof f); f[0] = 0; int qwq = 0; for (int i = 1;i <= tot;++i) { qwq += a[i].v; //printf("%d ",qwq); if (qwq > 1000000) qwq = 1000000; for (int j = qwq;j >= a[i].v;--j) { //printf("%d ",j); if (f[j-a[i].v]+1 <= f[j]) { road[j][i] = 1; f[j] = min(f[j],f[j-a[i].v] + 1); } //printf("%d %d\n",i,j); } } //for (int i = tot-10;i <= tot;++i) printf("%d %d %d\n",a[i].v,a[i].typ,a[i].num); while (~scanf("%d",&n)){ if (n == 0) break; printf("Case %d: ",++$); //cout << f[n] << endl; if (f[n] == 0x3f3f3f3f) { puts("impossible"); continue; } int now = n; //while (now){ for (int i = tot;i;--i) { if (road[now][i]) { printf("%d",a[i].num); if (a[i].typ == 1) putchar('H'); elseputchar('L'); now -= a[i].v; putchar(' '); } } //} puts("");
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<vector> #include<cmath> usingnamespace std; #define ll long long #define ri int
char buf[1 << 20], *p1, *p2; #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)?EOF: *p1++) template <typename T> inlinevoidread(T &t){ ri v = getchar(); T f = 1; t = 0;
while (!isdigit(v)) { if (v == '-') f = -1;
v = getchar(); }
while (isdigit(v)) { t = t * 10 + v - 48; v = getchar(); }
constint N = 1e5 + 10; constint M = 2e6 + 10; constint delta = 1e6 + 1;
int n,kas,js,SZ,rt; structmummy { int x, y; } mu[N]; structline { int x, l, r, op; } seg[N << 1]; structnode { int ls, rs; ll v, lz; } tr[N * 40];
boolcmp(line l1, line l2){ return l1.x < l2.x; } voidup(int x, int s, int t){ if (tr[x].lz) tr[x].v = t - s + 1; elseif (s == t) tr[x].v = 0; else tr[x].v = tr[tr[x].ls].v + tr[tr[x].rs].v; } voidins(int l, int r, int s, int t, int &x, ll num){ if (!x) x = ++SZ, tr[x].v = tr[x].lz = tr[x].ls = tr[x].rs = 0;
if (l <= s && t <= r) { tr[x].lz += num, up(x, s, t); return; }
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cctype> #include<vector> #include<cmath> usingnamespace std; #define ll long long #define ri int
char buf[1 << 20], *p1, *p2; #define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 20, stdin), p1 == p2)?EOF: *p1++) template <typename T> inlinevoidread(T &t){ ri v = getchar();T f = 1;t = 0; while (!isdigit(v)) {if (v == '-')f = -1;v = getchar();} while (isdigit(v)) {t = t * 10 + v - 48;v = getchar();} t *= f; } template <typename T,typename... Args> inlinevoidread(T &t,Args&... args){ read(t);read(args...); }
Vector operator + (Vector A, Vector B) {returnVector(A.x+B.x, A.y+B.y);} Vector operator - (Vector A, Vector B) {returnVector(A.x-B.x, A.y-B.y);} Vector operator * (Vector A, double p) {returnVector(A.x*p, A.y*p);} Vector operator / (Vector A, double p) {returnVector(A.x/p, A.y/p);} booloperator < (const Point& a, const Point& b){ return a.x<b.x || (a.x==b.x && a.y<b.y);} booloperator == (const Point& a, const Point& b){returndcmp(a.x-b.x)==0 && dcmp(a.y-b.y)==0;} doubleDot(Vector A, Vector B){ return A.x*B.x+A.y*B.y; } doubleLength(Vector A){returnsqrt(Dot(A, A));} doubleAngle(Vector A, Vector B){returnacos( Dot(A, B)/Length(A)/Length(B) );} doubleCross(Vector A, Vector B){ return A.x*B.y - A.y*B.x ;} doubleArea2(Point A, Point B, Point C){returnCross(B-A, C-A); } doubleDistanceToLine(Point P, Point A, Point B) { Vector v1 = B-A, v2 = P-A; //cout << fabs(Cross(v1, v2)) << " " << Length(v1) << " " << fabs(Cross(v1, v2)) / Length(v1) << endl; returnCross(v1, v2) / Length(v1); }
int n,$;
signedmain(){ while (cin >> n) { if (!n) return0; for (int i = 1;i <= n;++i) cin >> p[i].x >> p[i].y; double minn = 1e20; for (int i = 1;i <= n;++i) { for (int j = i + 1;j <= n;++j) { Point l = p[i],r = p[j];
double maxdis = 0,mindis = 0; for (int k = 1;k <= n;++k) { if (k != i && k != j) { //printf("%d %d %lf\n",i,j,DistanceToLine(p[k],l,r)); maxdis = max(maxdis,DistanceToLine(p[k],l,r)); mindis = min(mindis,DistanceToLine(p[k],l,r)); //cout << maxdis << " " << mindis << endl; } } minn = min(minn,maxdis-mindis); } } minn = ceil(minn * 100) / 100.0; printf("Case %d: %.2lf\n",++$, minn); } return0; }