Pagini recente » Cod sursa (job #662303) | Cod sursa (job #3180285) | Cod sursa (job #2674091) | Cod sursa (job #2318993) | Cod sursa (job #1428988)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMax = 16005;
int v[NMax];
int main(){
int n,k,m = 0;
fin >> n >> k;
for(int i = 1; i <= n; i++){
fin >> v[i];
m = max(m, v[i]);
}
int lo = m;
int hi = NMax * NMax;
while(lo <= hi){
int mid = (lo + hi) / 2;
int lim = 1;
int sum = mid - v[1];
for(int i = 2; i <= n; i++){
if(v[i] <= sum){
sum -= v[i];
} else {
sum = mid - v[i];
lim++;
}
}
if(lim <= k){
hi = mid - 1;
} else {
lo = mid + 1;
}
}
fout << lo;
return 0;
}