Pagini recente » Cod sursa (job #433779) | Cod sursa (job #2577510) | Cod sursa (job #2122762) | Cod sursa (job #2179923) | Cod sursa (job #3277017)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
int n; fin >> n;
int k; fin >> k;
int maxc = 0, s = 0;
int v[n+1];
for (int i=1; i<=n; i++) {
fin >> v[i];
s += v[i];
if (v[i] > maxc) maxc = v[i];
}
int l = maxc;
int r = s;
while (l < r) {
int mij = (l+r)/2;
int drumuri = 1, ds = 0;
for (int i=1; i<=n; i++) {
ds += v[i];
if (ds > mij) {
ds = v[i];
drumuri++;
}
}
// cout << "mij: " << mij << " d: " << drumuri << endl;
if (drumuri > k) l = mij+1;
else r = mij-1;
}
fout << l;
return 0;
}