Pagini recente » Clasament Teme ACM Unibuc 2013 | Cod sursa (job #2202540) | Cod sursa (job #220520) | Cod sursa (job #1871199) | Cod sursa (job #901376)
Cod sursa(job #901376)
#include<cstdio>
#define LL long long
using namespace std;
const int NMAX = 16009;
LL sum;
LL n, k, v[16 * 1024];
inline int count(LL val)
{
LL s = val, kk = k, i;
for(i = 1; i <= n && kk; ++i)
if(v[i] <= s) s-= v[i];
else --kk, i--, s = val;
if(i == n + 1) return 1;
return 0;
}
inline LL caut(LL st, LL dr)
{
LL m;
while(st < dr)
{
m = (st + dr) >> 1;
if(count(m)) dr = m;
else st = m + 1;
}
return m;
}
int main()
{
freopen("transport.in", "rt", stdin);
freopen("transport.out", "wt", stdout);
scanf("%ld%ld", &n, &k);
for(LL i = 1; i <= n; ++i) scanf("%ld", &v[i]), sum += v[i];
printf("%ld\n", caut(1, sum + sum));
return 0;
}