Pagini recente » Cod sursa (job #1215789) | Cod sursa (job #480025) | Cod sursa (job #2963548) | Cod sursa (job #2342669) | Cod sursa (job #1240397)
#include <iostream>
#include <fstream>
#define MAXN 16005
std::ifstream f("transport.in");
std::ofstream g("transport.out");
int n, k;
int a[MAXN];
bool check(int c)
{
int s = 0, cont = 0;
for (int i = 1; i <= n; i++)
{
if (s + a[i] > c) {
s = 0;
cont++;
}
s += a[i];
}
cont++;
if (cont > k) {
return false;
} else {
return true;
}
}
int main()
{
f >> n >> k;
int mn = 0;
int mx = 0;
for (int i = 1; i <= n; i++)
{
f >> a[i];
mn = std::max(mn, a[i]);
mx += a[i];
}
if (n == 1) {
g << a[1] << std::endl;
return 0;
}
int st = mn;
int dr = mx;
while (st <= dr)
{
int mij = ((st + dr) >> 1);
if (check(mij) == false && check(mij + 1) == true) {
g << mij + 1 << std::endl;
return 0;
}
if (check(mij) == false) {
st = mij + 1;
} else {
dr = mij - 1;
}
}
return 0;
}