Pagini recente » Cod sursa (job #3178400) | Cod sursa (job #1225907) | Cod sursa (job #2662606) | Cod sursa (job #2530610) | Cod sursa (job #2660773)
#include <fstream>
using namespace std;
ifstream cin ( "transport.in" );
ofstream cout ( "transport.out" );
int v[16000];
bool verif ( int k, int n, int summax ) {
int i, sum;
sum = 0;
for ( i = 1; i <= n; i++ ) {
sum += v[i];
if ( sum > summax ) {
k--;
if ( k < 0 )
return 0;
sum = 0;
i--;
}
else if ( sum == summax ) {
k--;
if ( k < 0 )
return 0;
sum = 0;
}
}
if ( sum >= 0 ) {
k--;
if ( k < 0 )
return 0;
}
return 1;
}
int main()
{
int n, k, st, dr, i, mij;
cin >> n >> k;
dr = 0;
for ( i = 1; i <= n; i++ ) {
cin >> v[i];
dr += v[i];
}
st = 1;
while ( st < dr ) {
mij = (st + dr) / 2;
if ( verif( k, n, mij ) )
dr = mij;
else
st = mij + 1;
}
cout << st;
cin.close();
cout.close();
return 0;
}