Pagini recente » Cod sursa (job #333751) | Cod sursa (job #463425) | Cod sursa (job #461217) | Cod sursa (job #708359) | Cod sursa (job #2699071)
#include <iostream>
#include <fstream>
#define MAX 160002
using namespace std;
int n,v[MAX],maxim,k,sol,sv;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
fin >> n >> k;
for(int i = 0; i < n; i++){
fin >> v[i];
maxim = max(maxim, v[i]);
sv += v[i];
}
int st = maxim, dr = sv;
while(st <= dr){
int mid = (st+dr)/2;
int nr = 1, s = 0;
for(int i = 0; i < n; i++){
s += v[i];
if(s > mid){
nr++;
s = v[i];
}
}
/// calculez nr transportuei
if(nr <= k){
sol = mid;
dr = mid-1;
}else{
st = mid+1;
}
}
fout << sol << "\n";
return 0;
}