Pagini recente » Cod sursa (job #1550851) | Cod sursa (job #1921435) | Cod sursa (job #1798302) | Cod sursa (job #465936) | Cod sursa (job #1885032)
#include <iostream>
#include <fstream>
using namespace std;
int n, i, k, v[16001], mx, s, nr;
int st, dr, mid;
int main () {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> n >> k;
mx = v[1];
for (i = 1; i <= n; i++)
{
fin >> v[i];
if (v[i] > mx) mx = v[i];
s += v[i];
}
st = mx; dr = s;
//fout << st << " " << mid << " " << dr << "\n";
while (st <= dr)
{
mid = st + (dr-st)/2;
//fout << st << " " << mid << " " << dr << "\n";
s = 0; nr = 1;
for (i = 1; i < n; i++)
{
s += v[i];
if (s + v[i+1] > mid) { nr++; s = 0; }
}
//fout << nr << "\n";
if (nr <= k) dr = mid-1;
else st = mid+1;
}
s = 0; nr = 1;
for (i = 1; i < n; i++)
{
s += v[i];
if (s + v[i+1] > mid) { nr++; s = 0; }
}
if (nr > k) mid++;
fout << mid << "\n";
}/*
7
3
2
3
1
4
*/