Pagini recente » Cod sursa (job #2811662) | Cod sursa (job #2093365) | Cod sursa (job #2107110)
#include <fstream>
#include <iostream>
#include <bitset>
#include <cstring>
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 mn = 0, sum = 0;
fin >> s >> k;
for( int i = 1 ; i <= s ; ++i ){
fin >> x;
if( x > mn ) mn = x;
saltea[i] = x;
sum += x;
}
st = mn; dr = sum;
while( dr - st > 1 ){
mid = st + ( dr - st ) / 2;
kk = 0;
trs = 1;
for( int i = 1 ; i <= s ; ++i ){
if( kk + saltea[i] <= mid ){
kk += saltea[i];
}else{
++trs;
kk = saltea[i];
}
}
//cout << trs << " ";
if( trs <= k ){
dr = mid;
//cout << st << " " << dr << "\n";
}
else{
st = mid;
//cout << "!" << st << " " << dr << "\n";
}
}
kk = 0;
trs = 1;
for( int i = 1 ; i <= s ; ++i ){
if( kk + saltea[i] <= st ){
kk += saltea[i];
}else{
++trs;
kk = saltea[i];
}
}
if( trs <= k ) fout << st;
else fout << dr;
return 0;
}