Pagini recente » Cod sursa (job #3176221) | Cod sursa (job #1752107) | Cod sursa (job #2645409) | Cod sursa (job #768522) | Cod sursa (job #2659833)
#include <fstream>
using namespace std;
ifstream fin( "transport.in" );
ofstream fout( "transport.out" );
const int NMAX = 16000;
int v[NMAX + 1];
bool verif( int n, int k, int med ){
int i, s, cnt;
s = cnt = 0;
for( i = 0; i < n; ++i ){
s += v[i];
if( s > med ){
s = v[i];
++cnt;
}
}
return ((cnt + (s > 0)) <= k);
}
int main() {
int n, k, st, dr, med, s, i;
fin >> n >> k;
s = 0;
for( i = 0; i < n; ++i ){
fin >> v[i];
s += v[i];
}
st = 0; dr = s;
while( dr - st > 1 ){
med = (st + dr) >> 1;
if( verif(n, k, med) == 0 )
st = med;
else
dr = med;
}
fout << dr;
return 0;
}