Pagini recente » Cod sursa (job #452504) | Cod sursa (job #1335959) | Cod sursa (job #34278) | Cod sursa (job #726604) | Cod sursa (job #1725196)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long long s, maxi, n, k;
int v[20000];
int vf( int x )
{
int nr = 0;
int sum = 0;
for( int i = 1; i <= n; i ++ )
{
if( sum + v[i] <= x )
sum += v[i];
else
{
nr++;
sum = v[i];
}
}
return nr+1;
}
int cbin( long long st, long long dr )
{
long long rasp = 0 ;
while( st <= dr )
{
long long mij = st + (dr - st)/2;
if( vf(mij) <= k )
{
rasp = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return rasp;
}
int main()
{
f >> n >> k;
for( int i = 1; i <= n; i++ )
{
f >> v[i];
s += v[i];
if( v[i] > maxi )
maxi = v[i];
}
g << cbin(maxi, s);
return 0;
}