Pagini recente » Cod sursa (job #2745444) | Cod sursa (job #26987) | Cod sursa (job #831161) | Cod sursa (job #290508) | Cod sursa (job #2713685)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
long long v[16001], x, i, j, nr, st, dr, mid, k, n, maxim, s;
int simulare(int x){
int sum=0, nr=0;
for(i=1;i<=n;i++){
sum=sum+v[i];
if(v[i]>x){
return k+1;
}
if(sum>x){
nr++;
sum=v[i];
}
if(nr>k){
return k+1;
}
}
nr++;
return nr;
}
int main() {
cin>>n>>k;
for(i=1;i<=n;i++){
cin>>v[i];
if(v[i]>maxim)
maxim=v[i];
s=s+v[i];
}
st=maxim;
dr=s;
while(st<=dr){
mid=(st+dr)/2;
int tr=simulare(mid);
if(tr>k)
st=mid+1;
else
dr=mid-1;
}
cout<<st;
}