Pagini recente » Cod sursa (job #1480072) | Cod sursa (job #2182592) | Cod sursa (job #3253213) | Cod sursa (job #2431307) | Cod sursa (job #2668971)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
short int v[16000];
bool merg( int mas, int n, int k ) {
int l = 0, i, s, mx;
s = 0;
mx = 0;
for( i = 0; i < n; i++ ) {
s += v[i];
if( s > mas ) {
l++;
s = v[i];
}
if( mx < v[i] )
mx = v[i];
}
if( s != 0 )
l++;
if( mas < mx )
return 0;
return l <= k;
}
int main() {
int n, k, i, dr, st, mij;
cin>>n>>k;
dr = 0;
for( i = 0; i < n; i++ ) {
cin>>v[i];
dr += v[i];
}
st = 0;
while( dr - st > 1 ) {
mij = dr - ( dr - st ) / 2;
if( merg( mij, n, k ) ) {
dr = mij;
} else st = mij;
}
cout<<dr;
return 0;
}