Pagini recente » Cod sursa (job #2244618) | Cod sursa (job #2986270) | Cod sursa (job #1356345) | Cod sursa (job #1752299) | Cod sursa (job #2924555)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005];
int main()
{
int i, n, k, valmaxima = 0, suma = 0, st, dr, sol = -1, mij, drum;
in >> n >> k;
for(i = 0; i < n; i++){
in >> v[i];
if(v[i] > valmaxima){
valmaxima = v[i];
}
suma += v[i];
}
st = valmaxima;
dr = suma;
while(st <= dr){
mij = (st + dr) / 2;
suma = 0;
drum = 0;
for(i = 0; i < n; i++){
suma += v[i];
if(suma + v[i + 1] > mij){
drum++;
suma = 0;
}
}
if(suma != 0){
drum++;
}
// cout << st << " " << dr << " " << mij << " " << drum;
if(drum > k){
st = mij + 1;
}
else{
dr = mij - 1;
sol = mij;
}
}
out << sol;
return 0;
}