Pagini recente » Cod sursa (job #1528469) | Cod sursa (job #1076971) | Cod sursa (job #3220569) | Cod sursa (job #1960150) | Cod sursa (job #2655643)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int v[16001], saltele, transporturi;
int checkTransport (int a) {
int load=0, c=0;
for (int i=1; i<=saltele; i++) {
load += v[i];
if (load > a) {
c++;
i--;
load = 0;
}
else if (load == a) {
c++;
load = 0;
}
}
if (load != 0)
c++;
return c;
}
int main()
{
cin >> saltele >> transporturi;
int maxim=0;
for (int i=1; i<=saltele; i++) {
cin >> v[i];
if (v[i] >= maxim)
maxim = v[i];
}
// for (int i=7; i<=1000; i++)
// cout << checkTransport(i) << "|";
// cautam binar prima valoare mai mare decat transporturi
int s = maxim, d=16000, mid, last = -1;
while (s <= d) {
mid = (s + d) / 2;
if (checkTransport(mid) > transporturi) {
last = mid;
s = mid + 1;
}
else
d = mid - 1;
}
cout << last+1;
return 0;
}