Pagini recente » Cod sursa (job #97846) | Cod sursa (job #2201585) | Cod sursa (job #1276141) | Cod sursa (job #2947129) | Cod sursa (job #1765302)
#include <iostream>
#include <fstream>
#define NMAX 16001
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,st,dr,a[NMAX],k,mij,sol;
bool verf(int vol)
{
int volume = 0,kk = k;
for(int i=0;i<n;i++)
{
if(a[i] +volume <=vol)
{
volume += a[i];
}
else
{
// cout << i << " ";
kk--;
volume = a[i];
}
if(kk<=0)
{
return false;
}
}
return true;
}
int main()
{
in >> n >> k;
for(int i=0;i<n;i++)
{
in >> a[i];
st = max(a[i],st);
dr += a[i];
}
while(st<=dr)
{
mij = (st+dr)/2;
//cout << st << " " << dr << endl;
if(verf(mij))
{
sol = mij;
dr = mij-1;
}
else
{
st = mij+1;
}
}
out << sol;
// cout <<verf(7);
return 0;
}