Pagini recente » Cod sursa (job #502062) | preoni-2007/runda-finala/poze/la-masa | Cod sursa (job #2570344) | Cod sursa (job #1419677) | Cod sursa (job #2869304)
#include <stdio.h>
int verifica(int m, int n, int a[16001]) {
int t = 1, s = 0;
for (int i = 1; i <= n; i++) {
if (s + a[i] <= m)
s += a[i];
else {
t++;
s = a[i];
}
}
return t;
}
int main(void) {
int N, K, V, d = 0, s = 1, m, sol = 0;
int a[16001];
FILE* f = fopen("transport.in", "rt");
FILE* g = fopen("transport.out", "wt");
do {
fscanf(f, "%d %d", &N, &K); //nr de saltele
} while ((N < 1 || N > 16000) && (K < 1 || K > 16000));
for (int i = 0; i < N; i++) {
do {
fscanf(f, "%d", &V); //volumele saltelelor
} while (V < 1 || V > 16000);
a[i] = V;
d += V;
}
while (s <= d) {
m = (s + d) / 2;
if (verifica(m, N, a) <= K) {
d = m - s;
sol = m;
}
else
s = m + 1;
}
fprintf(g, "%d", sol);
fclose(f);
fclose(g);
return 0;
}