Pagini recente » Cod sursa (job #2321474) | Cod sursa (job #2466431) | Cod sursa (job #1060213) | Cod sursa (job #3200255) | Cod sursa (job #40368)
Cod sursa(job #40368)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, a[16000];
int verif(int val)
{
int cnt = 1;
int sum = 0;
int i = 0;
while ( i < n )
{
sum += a[i];
if ( sum > val )
{
sum = a[i];
++cnt;
}
if ( cnt > k )
return 0;
++i;
}
return 1;
}
int main()
{
in >> n >> k;
int max = 0, s = 0;
for ( int i = 0; i < n; ++i )
{
in >> a[i];
s += a[i];
if ( max < a[i] )
max = a[i];
}
int sol = s;
while ( max <= s )
{
int m = (max+s)>>1;
if ( verif(m) )
s = m-1, sol = m;
else
max = m+1;
}
out << sol << endl;
return 0;
}