Cod sursa(job #152960)
| Utilizator | Data | 9 martie 2008 22:30:14 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <stdio.h>
int t,nr,n,k,i,min,max,rez,u,mij,v[17000];
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
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];
}
rez=min;
u=max;
while(rez<=u)
{
mij=(rez+u)/2;
t=0; nr=0;
for(i=1;i<=n;i++)
{
t+=v[i];
if(t>mij)
{
t=0;
nr++;
i--;
}
}
if(t!=0)
{nr++; t=0; }
if(nr<=k)
u=mij-1;
else
rez=mij+1;
}
printf("%d\n",rez);
return 0;
}
