Cod sursa(job #422950)
| Utilizator | Data | 23 martie 2010 12:49:43 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include <stdio.h>
int i,n,v[16001],c,k,dr,t,s,st,x;
int main() {
FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");
fscanf(f,"%d%d",&n,&c);
for(i=1;i<=n;i++) {
fscanf(f,"%d",&v[i]);
if(v[i]>st)
st=v[i];
dr+=v[i];
}
while(st<=dr) {
k=(st+dr)/2;
t=0;
x=c;
for(i=1;i<=n;i++)
if(t+v[i]<=k)
t+=v[i];
else {
t=0;
x--;
i--;
}
x--;
if(x<0)
st=k+1;
else {
s=k;
dr=k-1;
}
}
fprintf(g,"%d",s);
return 0;
}