Pagini recente » Cod sursa (job #1694596) | Cod sursa (job #2293690) | Cod sursa (job #2293684) | Cod sursa (job #3323080) | Cod sursa (job #3322469)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
fin>>n>>k;
int saltele[16001];
for (int i=0;i<n;i++)
fin >> saltele[i];
int st=saltele[0];
int dr=0;
for (int i=0;i<n;i++) {
if(saltele[i] > st) st=saltele[i];
dr+=saltele[i];
}
int raspuns=dr;
while (st <= dr) {
int mij=(st+dr)/2;
int curse=1;
int volumCurent = 0;
for (int i=0;i<n;i++) {
if (volumCurent+saltele[i]<=mij)
volumCurent+=saltele[i];
else {
curse++;
volumCurent=saltele[i];
}
}
if (curse<=k) {
raspuns=mij;
dr=mij-1;
} else {
st=mij+1;
}
}
fout <<raspuns<<"\n";
return 0;
}