Pagini recente » Cod sursa (job #1215368) | Cod sursa (job #2261291) | Cod sursa (job #2499656) | Cod sursa (job #2473369) | Cod sursa (job #1248464)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n, k, v[16001], dr, st, mid, i, maxs, s[8001], p, c, sum;
int main()
{
fin >> n >> k;
for (i=1; i<=n; i++) {
fin >> v[i];
if (v[i] > maxs)
maxs = v[i];
sum+=v[i];
}
//cout << maxs << "\n";
//for (c = maxs; ;c++) {
int st = maxs;
int dr = sum;
while (st <= dr) {
c = st + (dr - st)/2;
for (i=1;i<=p;i++)
s[i] = 0;
p = 1;
for ( i=1; i <= n; i++ ) {
if ( s[p] + v[i] > c ) {
p++;
s[p] += v[i];
}
else {
s[p] += v[i];
}
}
if (p<=k)
dr = c-1;
else
st = c+1;
}
fout<<st;
fin . close ();
fout . close ();
return 0;
}