pku1064二分枚举+控制精度

pku1064二分枚举+控制精度
#include < iostream >
using   namespace  std;

const   int  N = 10010 ;

int  a[N];
int  n,aim;


bool  Check( int  x) {
    
int cnt=0;
    
int i;
    
for(i=1;i<=n;++i)
    
{
        cnt
+=a[i]/x;
    }

    
if(cnt>=aim)return 1;
    
return 0;
}



int  solve( int  mx) {
    
int mid,left=1,right=mx;
    
while(left<=right)
    
{
        mid
=(left+right)>>1;
        
if(Check(mid))left=mid+1;
        
else right=mid-1;
    }

    
return right;
}





int  main() {
    scanf(
"%d%d",&n,&aim);
    
double tp;
    
int i;
    
int mx=-1;
    
for(i=1;i<=n;++i)
    
{
        scanf(
"%lf",&tp);
        a[i]
=(tp+0.001)*100;
        
if(mx<a[i])mx=a[i];
    }

    
int res=solve(mx);
    
if(res==0)printf("0.00\n");
    
else printf("%.2lf\n",(double)res/100.00);
    
return 0;
}


你可能感兴趣的:(pku1064二分枚举+控制精度)