Pagini recente » Cod sursa (job #537988) | Cod sursa (job #2579065) | Cod sursa (job #495169) | Cod sursa (job #379115) | Cod sursa (job #1240401)
#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;
}
for (int i = mn; i <= mx; i++) {
if (check(i) == true) {
g << i << 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;
}