Pagini recente » Cod sursa (job #308117) | Cod sursa (job #2280083) | Cod sursa (job #313372) | Cod sursa (job #1026282) | Cod sursa (job #2804005)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int c, n, k, a[16003], mij, st, dr, nrd;
int simulate(int cap){
int nrd = 0, cam = 0;
for(int i = 1; i <= n; i++){
if(cam + a[i] <= cap)
cam += a[i];
else{
nrd++;
cam = 0;
}
}
if(cam)
nrd++;
return nrd;
}
int main(){
fin >> n >> k;
for(int i = 1; i <= n; i++){
fin >> a[i];
c += a[i];
}
st = 1;
dr = c;
while(st <= dr){
mij = (st + dr) / 2;
nrd = simulate(mij);
if(nrd == k)
break;
else if(nrd > k)
dr = mij - 1;
else
st = mij + 1;
}
fout << nrd;
}