Cod sursa(job #137143)
Utilizator | Data | 16 februarie 2008 23:23:11 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
#define NMAX 16001
long x[NMAX],in,sf,mm,m,n,a,t,s,k,i,j,l,q;
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
in=-1;
for (i=1;i<=n;i++)
{
scanf("%ld",&x[i]);
sf+=x[i];
if (in<x[i]) in=x[i];
}
while (in<=sf)
{
m=(in+sf)/2;
a=1;
s=0;
t=1;
for (i=1;i<=n;i++)
{
s+=x[i];
if (s>m) {s=0; i--; t++;}
}
if (t<=k)
{
sf=m-1;
mm=m;
}
else
in=m+1;
}
printf("%ld\n",mm);
return 0;
}