Pagini recente » Cod sursa (job #1266225) | Cod sursa (job #1310211) | Cod sursa (job #1422801) | Cod sursa (job #1225578) | Cod sursa (job #773551)
Cod sursa(job #773551)
#include<stdio.h>
#include<vector>
using namespace std;
vector < int > v;
int n, k, res, st, end, mid, i;
int check(int x)
{
int nr = 0, i = -1, s;
while(nr <= k && i + 1 < n)
{
s = 0;
while(s + v[i+1] <= x && i + 1 < n)
++i, s += v[i];
nr++;
}
if(nr <= k)
return 1;
return 0;
}
int main()
{
FILE *f = fopen("transport.in", "r");
fscanf(f, "%d %d", &n, &k);
for(i = 0; i < n; ++i)
fscanf(f, "%d", &st), v.push_back(st), end += st;
fclose(f);
st = 1;
while(st <= end)
{
mid = (st + end) / 2;
if(check(mid))
end = mid - 1;
else
st = mid + 1;
}
res = st;
FILE *g = fopen("transport.out", "w");
fprintf(g, "%d\n", res);
fclose(g);
return 0;
}