Cod sursa(job #284580)
| Utilizator | Data | 21 martie 2009 20:13:53 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <stdio.h>
int n,k,i,v[16001],s;
int cautbin(int st,int d)
{
int m,rez;
while(st<=d)
{
m=(st+d)/2;
int nr=0,c=0,t=0,i=1;
for(nr=1;nr<=k;nr++)
{
while(c+v[i]<=m && i<=n)
{
c=c+v[i];
i++;
}
t=t+c;
c=0;
}
if(t<s)
st=m+1;
else
{
d=m-1;
rez=m;
}
}
return rez;
}
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]);
s=s+v[i];
}
printf("%d",cautbin(1,s));
return 0;
}
