Pagini recente » Cod sursa (job #2695965) | Cod sursa (job #2017975) | Cod sursa (job #2424945) | Cod sursa (job #2372840) | Cod sursa (job #1961691)
#include <stdio.h>
using namespace std;
const int N = 16000*16000;
int v[16001];
int caut_bin(int n, int k)
{
int i, step , s = 0, j, nr_drum = 0;
bool ok;
for(step = 1; step <= N; step <<= 1);
for(i = 0; step; step >>= 1)
{
ok = true;
nr_drum = 1;
s = 0;
for(j = 0; j < n; j++)
{
if (v[j] > step + i)
ok = false;
if(s + v[j] <= step + i)
s+=v[j];
else
{
s = v[j];
nr_drum++;
}
}
if(ok == false || nr_drum > k)
i += step;
}
return i + 1;
}
int main()
{
FILE *in, *out;
in = fopen("transport.in", "r");
out = fopen("transport.out", "w");
int n, k;
fscanf(in, "%d%d", &n, &k);
int i;
for(i = 0; i < n; i++)
fscanf(in, "%d", &v[i]);
fprintf(out, "%d", caut_bin(n, k));
return 0;
}