Pagini recente » Cod sursa (job #3160179) | Cod sursa (job #1274832) | Cod sursa (job #1678635) | Cod sursa (job #1036818) | Cod sursa (job #2481668)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int nmax = 16000;
int n, k, v[nmax + 5];
void Read(){
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> v[i];
}
int Check(int q){
int nr = k, ind = 1;
while (nr){
int s = q;
while (s >= v[ind]){
s -= v[ind];
ind++;
if (ind == n + 1)
return 1;
}
nr--;
}
return 0;
}
int BinSearch(){
int l = 1, r = n * nmax;
int ans = r;
while (l <= r){
int mid = (l + r) / 2;
if (Check(mid)){
r = mid - 1;
ans = min(ans, mid);
}
else
l = mid + 1;
}
return ans;
}
int main(){
Read();
fout << BinSearch() << '\n';
return 0;
}