Pagini recente » Cod sursa (job #1496388) | Cod sursa (job #1208578) | Cod sursa (job #2895122) | Cod sursa (job #2738628) | Cod sursa (job #155867)
Cod sursa(job #155867)
#include <iostream>
#include <fstream>
using namespace std;
int N, K,
s[16001];
long long 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];
if (left < 0)
return (long long)16000*16000;
++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;
}