Pagini recente » Cod sursa (job #80693) | Cod sursa (job #1712032) | Cod sursa (job #3146396) | Cod sursa (job #1070226) | Cod sursa (job #1751382)
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, st, dr, mid, v[16005], k;
int vf( int x ){
int nr = 0;
int c = 0;
for( int i = 1; i <= n; i++ ){
if( c + v[i] <= x ){
c += v[i];
}else{
nr++;
c = v[i];
}
}
if( c != 0 ){
nr++;
}
if( nr <= k ){
return 0;
}else{
return 1;
}
}
int main(){
fin >> n >> k;
for( int i = 1; i <= n; i++ ){
fin >> v[i];
dr += v[i];
st = max( st, v[i] );
}
st = st;
dr = dr;
while( st <= dr ){
mid = ( st + dr ) / 2;
if( vf(mid) == 1 ){
st = mid + 1;
}else{
dr = mid - 1;
}
}
fout << st;
return 0;
}