Cod sursa(job #1829000)
Utilizator | Data | 14 decembrie 2016 10:42:49 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <cstdio>
int a[16001];
int main (){
freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
int l1=0,l2=0,n,i,m,s,nrs,k,x;
scanf ("%d %d",&n,&k);
for (i=1;i<=n;i++){
scanf ("%d",&a[i]);
if (l1<a[i])
l1=a[i];
l2+=a[i];
}
while (l1<=l2){
m=(l1+l2)/2;
s=nrs=0;
for (i=1;i<=n;i++){
s+=a[i];
if (s>m){
nrs++;
s=a[i];
}
}
nrs++;
if (nrs<=k){
x=m;
l2=m-1;
}
else
l1=m+1;
}
printf ("%d",x);
return 0;
}