Pagini recente » Borderou de evaluare (job #2267545) | Cod sursa (job #1988282) | Cod sursa (job #212160) | Borderou de evaluare (job #2418210) | Cod sursa (job #558571)
Cod sursa(job #558571)
#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++;
j = i;
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);
}