Pagini recente » Cod sursa (job #2978335) | Cod sursa (job #1003303) | Cod sursa (job #318716) | Cod sursa (job #569378) | Cod sursa (job #52523)
Cod sursa(job #52523)
#include<stdio.h>
int main () {
int n,k,v[16000],i,p=-1,nr=0,a=0,u=0,m;
FILE *in=fopen("transport.in","r"), *out=fopen("transport.out","w");
fscanf(in,"%d%d",&n,&k);
for(i=0;i<n;i++){
fscanf(in,"%d",&v[i]);
u+=v[i];
if(v[i]>p)
p=v[i];
}
for(i=0;i<n;i++){
a+=v[i];
if(a>p){
a=v[i];
nr++;
}
}
if(a>0)
nr++;
if(nr<=k){
fprintf(out,"%d\n",p);
return 0;
}
m=(p+u)/2;
while(p<u){
a=0;
nr=0;
for(i=0;i<n;i++){
a+=v[i];
if(a>m){
a=v[i];
nr++;
}
}
if(a>0)
nr++;
if(nr<=k)
u=m;
else
p=m+1;
m=(p+u)/2;
}
fprintf(out,"%d\n",m);
fclose(in);
fclose(out);
return 0;
}