Pagini recente » Cod sursa (job #2354125) | Cod sursa (job #3188911) | Cod sursa (job #533442) | Cod sursa (job #10434) | Cod sursa (job #2353430)
#include <bits/stdc++.h>
#define NMAX 16001
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
int n, k, i;
int a[NMAX];
bool ok(int c)
{
int ko = k, cc = c;
for(i=1; i<=n; i++)
{
if (a[i] > c)
{
return false;
}
if(a[i] <= cc)
cc -= a[i];
else
{
ko--;
if(ko <= 0)return false;
cc = c - a[i];
}
}
return true;
}
int cautare_bin()
{
int mij = 0, st = 1, dr = NMAX * NMAX, mini = -1;
while(st <= dr)
{
mij = (dr - st)/ 2 + st;
if(ok(mij))
{
mini = mij;
dr = mij - 1;
}
else st = mij + 1;
}
return mini;
}
int main()
{
f>>n>>k;
for(i=1; i<=n; i++)f>>a[i];
g<<cautare_bin();
return 0;
}