Pagini recente » Cod sursa (job #3358075) | Monitorul de evaluare | Cod sursa (job #686877) | Cod sursa (job #765625) | Cod sursa (job #3330607)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001],n,k;
bool capacitateBuna(int mij){
long long suma=0;
int nrtr=0;
for(int i=1; i<=n; i++){
if(suma + v[i] <= mij)
suma += v[i];
else{
nrtr++;
suma = v[i];
}
}
nrtr++;//ultimul transport
if(nrtr<=k){
return true;
}
return false;
}
int cb(int st, int dr){
int rasp = -1;
int mij;
while (st<=dr){
mij=(st+dr)/2;
if(capacitateBuna(mij) == true){
rasp = mij; /// rasp = capacitatea curenta
dr = mij - 1;
}
else
st = mij + 1;
}
return rasp;
}
int main() {
int volmax=0;
int volmin=0;
fin>>n>>k;
for(int i=1; i<=n; i++){
fin>>v[i];
volmax=volmax+v[i];
if(volmin<=v[i]){
volmin=v[i];
}
}
fout<<cb(volmin, volmax);
return 0;
}