Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru preoni-2007/runda-3/solutii intre reviziile 23 si 24 | Autentificare | Cod sursa (job #1796640)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
long long n, c, k, v[16001];
int main()
{
long long i, j, s = 0, cmax = 0, ok = 0, m, nr, sp, ip, ii;
fin>>n>>k;
for(i = 1; i <= n; ++i){
fin>>v[i];
s += v[i];
if(v[i] > cmax)cmax = v[i];
}
i = cmax;
j = s;
while(i <= j && ok == 0){
m = (i + j) / 2;
nr = 0;
sp = 0;
for(ip = 1; ip <= n; ++ip){
if(sp + v[ip] <= m){
sp += v[ip];
} else {
nr++;
sp = v[ip];
ii= ip;
}
}
if(ii != n)nr++;
if(nr <=
k) {
j = m - 1;
} else {
i = m + 1;
}
}
fout<<m;
return 0;
}