| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁能帮我看下到底是什么地方错了 谢谢 代码见内!!!!!!In Reply To:见内 Posted by:nwpu_ghost at 2007-07-21 18:51:50 #include<stdio.h>
int m,n,a[1000010];
int check(int mid)
{ int nu=0,month=1,i,k;
for(i=1;i<=n;i++)
{ k=nu+a[i];
if(k>mid)
{ month++;nu=a[i]; }
else{ nu+=a[i]; }
if(month>m)return -1;
}
return month;
}
int main()
{ int i,j,k,min,max,mid;
int nu,month;
while(1)
{ scanf("%d%d",&n,&m);
min=-1;
for(i=1;i<=n;i++)
{ scanf("%d",&a[i]);
if(min<a[i])min=a[i];
}
max=10000;mid=0;
while(min<max-1)
{ mid=(min+max)/2;
month=check(mid);
if(month==-1){min=mid;continue;}
if(month<=m)max=mid;
}
month=check(min);k=check(max);
j=check(mid);
if(month==m)mid=min;
if(j==-1)mid=max;
printf("%d\n",mid);break;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator