Pagini recente » Cod sursa (job #1140273) | Cod sursa (job #2786550) | Cod sursa (job #1659427) | Cod sursa (job #267159) | Cod sursa (job #2101456)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
long long n, k, saltea[16001], s, saltmin;
long long bin(){
long long lo = saltmin, hi = s, mid, ok;
while(lo < hi){
mid = (lo + hi) / 2;
int sverif = 0, grupe = 1;
for(int i = 1; i <= n; i++){
if(sverif + saltea[i] <= mid){
sverif += saltea[i] ;
}else{
sverif = 0;
grupe++;
sverif += saltea[i];
}
}
if(grupe <= k){
ok = 1;
}else{
ok = 2;
}
if(ok == 1){
hi = mid - 1;
}else{
lo = mid + 1;
}
}
return hi;
}
int main(){
fin>>n>>k;
for(int i = 1; i <= n; i++){
fin>>saltea[i];
s += saltea[i];
if(saltea[i] > saltmin){
saltmin = saltea[i];
}
}
fout<<bin();
}