Pagini recente » Cod sursa (job #2334518) | Monitorul de evaluare | Cod sursa (job #109966) | Cod sursa (job #894089) | Cod sursa (job #3223445)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int nmax = 16005;
int a[nmax];
int n, k;
int nrdrumuri(int c){
int nr = 1;
int volum = 0;
for(int i = 1; i <= n; i++){
if(volum += a[i] <= c){
volum += a[i];
}
else {
volum = a[i];
nr++;
}
}
return nr;
}
int main(){
ios::sync_with_stdio(0);
f.tie(0);
f >> n >> k;
int maxim = -1;
for(int i = 1; i <= n; i++){
f >> a[i];
maxim = max(maxim, a[i]);
}
int sol = 0, m;
int st = maxim, dr = 16000 * 16000;
while(st <= dr){
m = (st + dr) / 2;
// int number = nrdrumuri(m);
// g << number << '\n';
if(nrdrumuri(m) <= k){
sol = m;
dr = m - 1;
}
else{
st = m + 1;
}
}
g << sol + 1<< '\n';
}