Pagini recente » Cod sursa (job #785460) | Cod sursa (job #954359) | Cod sursa (job #366308) | Cod sursa (job #2653392) | Cod sursa (job #130816)
Cod sursa(job #130816)
#include <cstdio>
#include <string>
#define maxn 16001
int a[maxn];
int n, K, sum;
void read()
{
freopen("transport.in","r",stdin);
scanf("%d %d\n", &n, &K);
for(int i=1;i<=n;++i) scanf("%d\n", a+i);
for(int i=1;i<=n;++i) sum+=a[i];
}
inline int oki(int S)
{
int i=1, k, s=0;
for(k=1;k<=K;++k)
{
int ss=0;
for(;i<=n;)
if(ss+a[i]<=S) ss+=a[i++];
else break;
s+=ss;
}
if(s==sum) return 1;
return 0;
}
void solve()
{
int i, cnt;
for(i=(1<<30), cnt=(1<<30); cnt; cnt>>=1)
if(i-cnt>=0)
if(oki(i-cnt))i-=cnt;
freopen("transport.out","w",stdout);
printf("%d\n", i);
}
int main()
{
read();
solve();
return 0;
}