Pagini recente » Cod sursa (job #2406576) | Cod sursa (job #1551973) | Cod sursa (job #3333186) | Cod sursa (job #250039) | Cod sursa (job #3337796)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,i,sol;
vector<int> v(n+1, 0);
int transport(int c){
int nr=n;
int t=v[n-1];
for(i=n-1;i>=0;i--){
if(t+v[i]<=c){
t+=v[i];
nr--;
}
else t=v[i];
}
return nr;
}
int main()
{
fin>>n>>k;
int s=0, mn=0;
for(i=0;i<n;i++) {
fin>>v[i];
s+=v[i];
if(v[i]>mn) mn=v[i];
}
int l=mn;
int r=s;
int mij=(l+r)/2;
while(l<=r){
mij=(l+r)/2;
if(transport(mij)>k){
l=mij+1;
}
else{
if(transport(mij)==k) sol=mij;
r=mij-1;
}
}
fout<<sol;
return 0;
}