Pagini recente » Cod sursa (job #1414802) | Cod sursa (job #389323) | Cod sursa (job #2619358) | Cod sursa (job #1223139) | Cod sursa (job #545110)
Cod sursa(job #545110)
#include <stdio.h>
#include <fstream>
using namespace std;
int a[16001];
int st, dr, n, k, i, j, m, cc;
bool ok(int c)
{
cc ^= cc;
j=1;
for(i=1;i<=n;i++){
if(a[i]+cc<=c)
cc+=a[i];
else{
j++;
cc=a[i];
}
if(j>k)
return false;
}
return true;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for(i = 1;i <= n;i++)
{
scanf("%d", a + i);
st = max(st, a[i]);
dr += a[i];
}
while(st <= dr)
{
m = st + (dr - st) / 2;
if(ok(m))
dr = m - 1;
else
st = m + 1;
}
printf("%d", st);
}