Cod sursa(job #1324100)
Utilizator | Data | 21 ianuarie 2015 20:21:43 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include<cstdio>
FILE *in,*out;
int v[16001];
int main(){
in=fopen("transport.in","r");
out= fopen("transport.out","w");
int elem,m,n,k,i,c,l1=0,l2=0,s,nrt;;
fscanf(in,"%d%d",&n,&k);
for(i=1;i<=n;i++){
fscanf(in,"%d",&v[i]);
l2=l2+v[i];
if(v[i]>l1)
l1=v[i];
}
while(l2>=l1){
c=(l1+l2)/2;
nrt=1;
s=0;
for(i=1;i<=n;i++)
if(s+v[i]<=c)
s=s+v[i];
else{
nrt++;
s=v[i];
}
if(nrt<=k){
elem=c;
l2=c-1;
}
else
l1=c+1;
}
fprintf(out,"%d",elem);
return 0;
}