Pagini recente » Cod sursa (job #490007) | Cod sursa (job #1667876) | Cod sursa (job #2573318) | Cod sursa (job #162091) | Cod sursa (job #731290)
Cod sursa(job #731290)
#include <stdio.h>
#define nmax 16001
using namespace std;
long long max, s, a[nmax], i, k, n;
long long ver(long long c)
{
long long s=0, nr=1;
for(i=1;i<=n;i++)
{
if(s+a[i]>c)
{
s=0;
nr++;
if(nr>k)
return 0;
}
s=s+a[i];
}
return 1;
}
long long caut(long long st,long long dr)
{
long long mij=(st+dr)/2;
if(st==dr)
return st;
if(ver(mij))
return caut(st,mij);
else
return caut(mij+1,dr);
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%lld %lld", &n, &k);
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
if(a[i]>max)
max=a[i];
s=s+a[i];
}
if(k==1)
printf("%lld",s);
else
if(k>=n)
printf("%lld",max);
else
printf("%lld",caut(max,s));
}