Pagini recente » Cod sursa (job #2797905) | Cod sursa (job #910479) | Cod sursa (job #189408) | Cod sursa (job #470250) | Cod sursa (job #1046065)
#include <iostream>
#include <fstream>
#define nmax 16005
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int N, K, v[nmax], i, step, sumaVol=0, maxVol=0;
int drum(int vol)
{
int nr = 1, s = 0;
for ( int i=1; i<=N; ++i )
if ( s + v[i] <= vol ) s += v[i];
else
{
s = v[i];
nr++;
}
return nr;
}
int main()
{
in >> N >> K;
for ( int i=1; i<=N; ++i )
{
in >> v[i];
sumaVol += v[i];
maxVol = max(v[i], maxVol);
}
for ( step = 1; step < sumaVol; step <<= 1 );
for ( i = step; step; step >>= 1 )
if ( i - step >= maxVol && drum(i-step) <= K)
i -= step;
out << i;
}