Pagini recente » Cod sursa (job #2399763) | Cod sursa (job #565646) | Cod sursa (job #2639574) | Cod sursa (job #1007521) | Cod sursa (job #460691)
Cod sursa(job #460691)
#include<cstdio>
#define MAX 16000*16001
int n, k, v[16001];
long canTransport(long x)
{
long s=0, t=0, poz=1, i, da=1;
while(poz<n && da)
{
s=0;
if(v[poz]>x)
return 0;
for(i=poz; i<=n && s<=x; ++i)
s+=v[i];
poz=i-1;
++t;
if(t>k)
da=0;
if(poz==n && s>x && t==k)
return 0;
}
return da;
}
long cauta()
{
long p, u, m;
p=1; u=MAX;
while(p<u)
{
m=(p+u)/2;
if(canTransport(m))
{
u=m;
}
else
{
p=m+1;
}
}
return (p+u)/2;
}
int main()
{
long i;
freopen("transport.in", "rt", stdin);
freopen("transport.out", "wt", stdout);
scanf("%d%d", &n, &k);
for(i=1; i<=n; ++i)
scanf("%d", &v[i]);
canTransport(7);
printf("%ld", cauta());
return 0;
}