Pagini recente » Cod sursa (job #2497903) | Cod sursa (job #420998) | Cod sursa (job #280544) | Cod sursa (job #3208611) | Cod sursa (job #1200446)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
int n, k;
int sum;
int v[16001];
void citeste () {
f >> n >> k;
for (int i = 1; i <= n; i++) {
f >> v[i];
sum += v[i];
}
}
bool ok (int x) {
int crt = 0, nr = 1;
for (int i = 1; i <= n; i++) {
if (crt + v[i] > x) {
nr++;
crt = v[i];
if (nr > k) return 0;
}
else crt += v[i];
}
return true;
}
void rezolva () {
int st = 1, dr = sum, mij;
int sol = sum;
while (st <= dr) {
mij = (st + dr) / 2;
if (ok(mij)) {
dr = mij - 1;
sol = min (sol, mij);
}
else st++;
}
g << sol << '\n';
}
int main () {
citeste ();
rezolva ();
return 0;
}