Cod sursa(job #492175)
| Utilizator | Data | 13 octombrie 2010 17:55:21 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <stdio.h>
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n, k, i, v[16001], min=0, max, c, t, ct, sol;
scanf("%d %d ", &n, &k);
for(i=1;i<=n;i++){
scanf("%d ", &v[i]);
if(v[i]>min){
min=v[i];
}
max+=v[i];
}
while(min<=max){
c=(min+max)/2;
t=0;
for(i=1; i<=n; i){
ct=c;
t++;
while(i<=n && v[i]<=ct){
ct-=v[i];
i++;
}
}
if(t<=k){
max=c-1;
sol=c;
}
else
min=c+1;
}
printf("%d ", sol);
return 0;
}
