Pagini recente » Cod sursa (job #1343741) | Cod sursa (job #2748806) | Cod sursa (job #2940289) | Cod sursa (job #474195) | Cod sursa (job #1880620)
#include<fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k;
long long cmax = 256000000LL, v[16005];
bool check(long long rs){
long long sum=0;
int trans=1;
for(int i=1; i<=n && trans<=k+2; ++i){
if(rs-sum>=v[i]){ sum+=v[i]; }
else{ ++trans; sum = v[i];
if(rs<v[i]) return 0;
}
}
if(trans>k) return 0;
else return 1;
}
long long caut(long long inc, long long sf){
long long mid = (inc + sf) / 2;
if(sf<=inc) return mid;
if(check(mid)){
cout<<mid<<"\n";
caut(inc, mid);}
else{
cout<<mid<<'\n';
caut(mid+1,sf);}
}
int main(){
cin>>n>>k;
if(k>n) k=n;
for(int i=1; i<=n; ++i) cin>>v[i];
// cout<<'\n';
// for(int i=1; i<=n; ++i) cout<<v[i]<<" ";
cout<<caut(0, cmax);
return 0;
}