Pagini recente » Cod sursa (job #1922029) | Cod sursa (job #611768) | Cod sursa (job #1411976) | Cod sursa (job #683265) | Cod sursa (job #2804017)
#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, Max;
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 = a[i];
}
}
if(cam)
nrd++;
return nrd;
}
int main(){
fin >> n >> k;
for(int i = 1; i <= n; i++){
fin >> a[i];
if(a[i] > Max)
Max = a[i];
c += a[i];
}
st = Max;
dr = c;
while(st < dr){
mij = (st + dr) / 2;
nrd = simulate(mij);
if(nrd <= k)
dr = mij;
else
st = mij + 1;
}
fout << dr;
}