Pagini recente » Cod sursa (job #1461618) | Cod sursa (job #945976) | Cod sursa (job #353138) | Cod sursa (job #1435897) | Cod sursa (job #2841374)
#include <iostream>
#include <fstream>
#define MAX 16002
using namespace std;
int n,k,cmax,cmin,v[MAX];
ifstream fin("transport.in");
ofstream fout("transport.out");
int transporturi(int c){
int actual = 0, ans = 1;
for(int i = 1; i <= n; i++){
/// vrem sa adaugam v[i] in camionul acutal
if(actual+v[i] <= c){
actual += v[i];
}else{
/// nu mai incape
ans++;
actual = v[i];
}
}
return ans;
}
int main()
{
fin >> n >> k;
for(int i = 1; i <= n; i++){
fin >> v[i];
cmax += v[i];
cmin = max(cmin, v[i]);
}
int rez = 0;
/// cautam cel mai mic nr c pt nrT <= k
int st = cmin, dr = cmax;
while(st <= dr){
int mij = (st+dr)/2;
int nrT = transporturi(mij);
if(nrT <= k){
rez = mij;
dr = mij-1;
}else{
st = mij+1;
}
}
fout << rez << "\n";
return 0;
}