Pagini recente » Cod sursa (job #2295910) | Cod sursa (job #326139) | Cod sursa (job #1675859) | Cod sursa (job #1816800) | Cod sursa (job #2278118)
#include <iostream>
#include <fstream>
using namespace std;
#define N 16100
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[N],i,j,n,k,s,mx;
bool check(int capacitate)
{
int curr = 0,it,nr = 0;
for( it = 0;it < n;++it)
if(curr + v[it] <= capacitate)
curr += v[it];
else
{
++nr;
curr = v[it];
}
return (nr <= k);
}
int bs(int l,int r)
{
if(check(l))
return l;
int poz = l;
for(int i = r - l; i ; i >>= 1)
if(poz + i < r && !check(poz + i))
poz += i;
return poz + 1;
}
int main()
{
fin >> n >> k;
mx = 0;
s = 0;
for(i = 0; i < n; ++i)
{
fin>>v[i];
s += v[i];
mx = max(v[i],mx);
}
fout << bs(mx,s);
return 0;
}