Pagini recente » Cod sursa (job #3321322) | Cod sursa (job #3352371) | Cod sursa (job #3335679) | Monitorul de evaluare | Cod sursa (job #3348863)
#include <fstream>
#include <vector>
std::ifstream fin("transport.in");
std::ofstream fout("transport.out");
int n, k;
std::vector<int> v;
bool check(int m){
int s = 0, cnt = 1;
for(int i = 0; i < n; ++i){
if(s + v[i] <= m){
s += v[i];
}
else{
s = v[i];
++cnt;
}
}
return cnt <= k;
}
int main(){
fin >> n >> k;
v.resize(n);
for(int& x : v)
fin >> x;
int st = 1, dr = 16000 * 16000 + 1, poz = -1;
while(st <= dr){
int m = (st + dr) / 2;
if(check(m)){
dr = m - 1;
poz = m;
}
else{
st = m + 1;
}
}
fout << poz;
}