Pagini recente » Cod sursa (job #2661371) | Cod sursa (job #2381234) | Cod sursa (job #344009) | Cod sursa (job #2170159) | Cod sursa (job #2278126)
#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];
}
++nr;
return (nr <= k);
}
int bs(int l,int r)
{
if(check(l))
return l;
int poz = l;
for(int i = r - l - 1; i ; i >>= 1)
while(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 + 1);
return 0;
}