Pagini recente » Cod sursa (job #1874495) | ONIS 2015, Solutii Runda 1 | ONIS 2015, Solutii Runda 1 | Monitorul de evaluare | Cod sursa (job #2892040)
#include <bits/stdc++.h>
#define nmax 16005
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, ans;
int volumes[nmax];
bool check_volume(int volume) {
int transports = 0;
int current_volume = 0;
for (int i = 0; i < n; ++i)
if (volumes[i] > volume) {
transports = k + 1;
break;
}
else
if (current_volume + volumes[i] > volume) {
++transports;
current_volume = volumes[i];
} else
current_volume += volumes[i];
++transports;
if (transports > k)
return false;
return true;
}
void solve() {
int mid, left, right;
left = 0;
right = 16005 * n + 1;
while (left < right) {
mid = (left + right) / 2;
if (check_volume(mid) == true)
right = mid;
else
left = mid + 1;
}
g << left;
}
int main() {
f >> n >> k;
for (int i = 0; i < n; ++i)
f >> volumes[i];
solve();
return 0;
}