Pagini recente » Cod sursa (job #388094) | Cod sursa (job #1995344) | Cod sursa (job #1415174) | Cod sursa (job #1218955) | Cod sursa (job #3296617)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int nr_trasee(int v[16001], int n, long long val){
int ct = 0, drumuri = 1;
for(int i = 0; i < n; i++){
ct += v[i];
if(ct > val){
ct = v[i];
drumuri++;
}
}
return drumuri;
}
int main(){
int v[16001], n, k;
long long sum = 0, maxim = 0;
fin >> n >> k;
for(int i = 0; i < n ; i++){
fin >> v[i];
sum += v[i];
if(maxim < v[i])
maxim = v[i];
}
long long st = maxim, dr = sum, mij, x;
mij = (st+dr)/2;
while(st <= dr){
mij = (st+dr)/2;
x = nr_trasee(v,n,mij);
if(x > k){
st = mij+1;
}
else{
dr = mij-1;
}
}
fout << mij;
fin.close();
fout.close();
}