Pagini recente » Cod sursa (job #266522) | Cod sursa (job #2928635) | Cod sursa (job #2686375) | Cod sursa (job #1668690) | Cod sursa (job #3220224)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, v[16001], k, st, dr, sol;
int camion(int k){
int cnt=1, ck=k;
for(int i=1; i<=n; i++){
if(k>=v[i]) k-=v[i];
else{
cnt++;
k=ck;
k-=v[i];
}
}
return cnt;
}
int main()
{
fin >> n >> k;
for(int i=1; i<=n; i++){
fin >> v[i];
st=max(v[i], v[i+1]);
dr+=v[i];
}
while(st<=dr){
int mij=(st+dr)/2;
if(camion(mij)>k) st=mij+1;
else if(camion(mij)<k) dr=mij-1;
else{
sol=mij;
dr--;
}
}
fout << sol;
return 0;
}