Pagini recente » Cod sursa (job #2037628) | Cod sursa (job #2209414) | Cod sursa (job #488825) | Cod sursa (job #2751170) | Cod sursa (job #2106824)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main()
{
int s, k, saltea[16002];
int st, dr , mid;
int x, trs, kk;
int sol, mx = -1;
fin >> s >> k;
for( int i = 1 ; i <= s ; ++i ){
fin >> x;
if( x > mx ) mx = x;
saltea[i] = saltea[i-1] + x;
}
saltea[s+1] = 2000000000;
if( k >= s ) { fout << mx; return 0; }
if( k == 1 ) { fout << saltea[s]; return 0;}
st = 1; dr = 2000000000;
while( dr - st > 1 ){
mid = st + ( dr - st ) / 2;
kk = mid;
trs = 1;
for( int i = 1 ; i <= s ; ++i ){
if( saltea[i] >= kk ){
++trs;
if( saltea[i] == kk ) kk = mid + saltea[i];
else kk = mid + saltea[i-1];
}
}
//cout << trs << " ";
if( trs <= k ){
sol = mid;
dr = mid;
}
else st = mid;
}
fout << sol;
return 0;
}