diff --git "a/C/\346\237\220\345\220\214\345\255\246\347\232\204\346\234\200\350\277\221\347\202\271\345\257\271\344\273\243\347\240\201.c" "b/C/\346\237\220\345\220\214\345\255\246\347\232\204\346\234\200\350\277\221\347\202\271\345\257\271\344\273\243\347\240\201.c" new file mode 100644 index 0000000000000000000000000000000000000000..bb6a0240d8cfd79490da71bfbb2550b746c08d72 --- /dev/null +++ "b/C/\346\237\220\345\220\214\345\255\246\347\232\204\346\234\200\350\277\221\347\202\271\345\257\271\344\273\243\347\240\201.c" @@ -0,0 +1,103 @@ +#include +#include +int x[1000001],y[1000001],s[1000001]; +int nth(int *a,int L,int R,int k) +{ + if(L==R)return a[L]; + int mid=(L+R)/2; + int i;int eq=0; + int l1=0,l2=0; + for(i=L;i<=R;i++) + { + if(a[i]a[mid])y[++l2]=a[i]; + else eq++; + } + if(k<=l1) + { + for(i=1;i<=l1;i++)s[i]=x[i]; + return nth(s,1,l1,k); + } + else if(k<=l1+eq)return a[mid]; + else + { + k-=(l1+eq); + for(i=1;i<=l2;i++)s[i]=y[i]; + return nth(s,1,l2,k); + } + } + int cmp(int x,int y) + { + if(x=0)return x-y; + else return y-x; + } +typedef struct{ + int x[1000000]; + int y[1000000]; + int sum; +}point; +point a; +int min(point a) +{ + point b,c; + int i,j; + if(a.sum==2) + { + return sqrt(pow(a.x[0]-a.x[1],2)+pow(a.y[0]-a.y[1],2)); + } + else + { + int midx=nth(a.x,1,a.sum-1,a.sum/2); + b.sum=0; + c.sum=0; + for(i=0;i