Pagini recente » Cod sursa (job #428169) | Cod sursa (job #586293) | Cod sursa (job #2308400) | Cod sursa (job #390810) | Cod sursa (job #1597610)
#include <cstdio>
#include <iostream>
#include <set>
#include <climits>
#include <map>
#include <algorithm>
#include <list>
#include <vector>
#include <utility>
#include <cstdlib>
#include <iomanip>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int f(int v[16000], int n, int vm) {
int ans = 1, aux = vm;
for (int i = 0; i < n; i++) {
if (aux >= v[i])
aux -= v[i];
else {
ans++;
aux = vm - v[i];
}
}
return ans;
}
int main() {
// freopen("tt.txt", "r", stdin);
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
int n, k, v[16000], left = 0, right = 0;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> v[i];
if (v[i] > left)
left = v[i];
right += v[i];
}
while (left < right) {
int mid = (left + right) / 2;
if (f(v, n, mid) > k)
left = mid + 1;
else
right = mid;
}
cout << left;
return 0;
}