pku3579 操二分查找真烦人 都搞两天了!

来源:互联网 发布:js获取input file值 编辑:程序博客网 时间:2024/04/27 17:00

 

  • Source Code
    #include<stdio.h>#include<algorithm>using namespace std;int a[100005];int main(){    int i,j,N,l,r,zhong;    long left,right,mid,count,num;    while(scanf("%d",&N)!=EOF)    {        for(i=1;i<=N;i++)scanf("%d",&a[i]);         sort(a+1,a+1+N);        num=(N*(N-1)/2+1)/2;        left=0; right=a[N]-a[1];        while(left<=right)        {             mid=(left+right)/2;             count=0;             for(i=2;i<=N;i++)             {                 l=i;r=N;                 while(l<=r)                 {                     zhong=(l+r)/2;                     if(a[zhong]-a[i-1]>=mid)r=zhong-1;                     else l=zhong+1;                       }                 count+=l-i;                  if(count>num+1)break;                         }             if(count>=num)right=mid-1;             else left=mid+1;                   }       printf("%lld/n",right);       //printf("left=%d right=%d mid=%d/n",left,right,mid);     }    return 0;}