SOJ 4128 二分查找

来源:互联网 发布:淘宝上如何发布宝贝 编辑:程序博客网 时间:2024/06/04 18:39

 

二分。。恩

 

#include<stdio.h>int a[1000010];long long sum,m;int n;int bins(int a[],int left,int right){   int k;   while(left<=right)   {      int mid=(left+right)/2;      sum=0;      for(k=0;k<n;k++)      {        if(a[k]>=mid)        sum+=a[k]-mid;      }      if(sum==m)      return mid;      else      {       if(sum>m)       left=mid+1;       else       right=mid-1;      }   }}      int main(){    while(scanf("%d%lld",&n,&m)==2)    {      int i,j;      int min=-1000;      int max=2000000000;      for(i=0;i<n;i++)      {       scanf("%d",&a[i]);       if(a[i]>min)       min=a[i];       if(a[i]<max)       max=a[i];      }      int ans=bins(a,max,min);      printf("%d\n",ans);    }    return 0;}