Pagini recente » Cod sursa (job #893552) | Cod sursa (job #795557) | Cod sursa (job #1279673) | Monitorul de evaluare | Cod sursa (job #2551714)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int delivery ( int nr );
int n, k;
int v[16137];
int st, dr, mid, ans;
int main()
{
in >> n >> k;
for ( register int i = 1 ; i <= n ; ++i )
in >> v[i];
st = 1;
dr = 256000000;
while ( st <= dr )
{
mid = ( st + dr ) / 2;
if ( delivery (mid) <= k )
{
dr = mid - 1;
ans = mid;
}
else
st = mid + 1;
}
out << ans;
return 0;
}
int delivery ( int nr )
{
int s = 0;
int trans = 0;
for ( register int i = 1 ; i <= n ; ++i )
{
if ( v[i] > nr )
return k + 1;
if ( s + v[i] <= nr )
s += v[i];
else
{
++trans;
s = v[i];
}
}
return trans + 1;
}