Pagini recente » Cod sursa (job #2158620) | Cod sursa (job #1422759) | Cod sursa (job #554717) | Cod sursa (job #2785070) | Cod sursa (job #3156142)
#include <fstream>
using namespace std;
int v[16000];
int findMinimunNumberOfDrumuri(int c,int n){
int i,ccur,drum;
ccur = c;
drum = 1;
for(i = 1; i <= n; i++){
if(v[i] <= ccur){
ccur -=v[i];
}
else{
drum ++;
ccur = c - v[i];
}
if(v[i] > c){
return 16001;
}
}
return drum;
}
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
int i,n,k,mincam,st,dr,mij;
fin >> n >> k;
for(i = 1; i <= n; i ++){
fin >> v[i];
}
st = 1;
dr = 256000000;
while(st <= dr){
mij = (st + dr) / 2;
if(findMinimunNumberOfDrumuri(mij,n) <= k){
dr = mij - 1;
mincam = mij;
}
else{
st = mij + 1;
}
}
fout << mincam;
return 0;
}