Pagini recente » Cod sursa (job #1323340) | Cod sursa (job #291335) | Cod sursa (job #472029) | Cod sursa (job #1663871) | Cod sursa (job #155856)
Cod sursa(job #155856)
#include <iostream>
#include <fstream>
using namespace std;
int N, K,
s[16001];
int cate_drumuri(long long cap) {
int left = cap;
int count(1);
for (int i(0); i < N; ++i) {
left -= s[i];
if (left < 0) {
left = cap - s[i];
++count;
}
}
return count;
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("transport.in", "r");
fscanf(fi, "%d %d", &N, &K);
for (int i(0); i < N; ++i)
fscanf(fi, "%d", &s[i]);
fclose(fi);
long long l = 1,
u = (long long)16000 * 160000;
while (l < u) {
int q = (l + u) / 2;
int aux = cate_drumuri(q);
//cout << q << ": " << aux << endl;
if (aux <= K)
u = q;
else
l = q + 1;
}
ofstream fout("transport.out");
fout << l << endl;
fout.close();
return 0;
}