Pagini recente » Cod sursa (job #2961059) | Cod sursa (job #872599) | Cod sursa (job #1518280) | Cod sursa (job #2317041) | Cod sursa (job #2101442)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int 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;
sverif += saltea[i];
grupe++;
if(grupe > k){
ok = 2;
break;
}
}
}
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();
}