Cod sursa(job #2487388)
Utilizator | Vlad Opris hoprix | Data | 4 noiembrie 2019 17:53:47 |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
const int MAX = 16005;
int N, K, v[MAX], l, r;
int main() {
ifstream fin("transport.in");
ofstream fout("transport.out");
fin >> N >> K;
for(int i = 1; i <= N; ++i)
fin >> v[i], l = max(l, v[i]), r += v[i];
int ans = r;
while(l <= r) {
int volum = (l + r) >> 1, d = 1, s = 0;
for(int i = 1; i <= N; ++i) {
s += v[i];
if(s > volum) d++, s = v[i];
}
(d <= K) ? r = volum - 1, ans = volum : l = volum + 1 ;
}
fout << ans;
}