Pagini recente » Cod sursa (job #1083432) | Cod sursa (job #1854775) | Cod sursa (job #1807580) | Cod sursa (job #2073977) | Cod sursa (job #1200445)
#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, 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;
}