Pagini recente » Cod sursa (job #2980197) | Cod sursa (job #172254) | Cod sursa (job #2206984) | Cod sursa (job #714935) | Cod sursa (job #2607640)
// By Stefan Radu
#include <algorithm>
#include <fstream>
#include <iomanip>
#include <cassert>
#include <vector>
#include <string>
#include <cctype>
#include <queue>
#include <deque>
#include <cmath>
#include <stack>
#include <map>
#include <set>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
#define sz(x) (int)(x).size()
typedef pair < int, int > pii;
typedef long long ll;
typedef long double ld;
typedef unsigned int ui;
typedef unsigned long long ull;
const ll MAX_VAL = 256000001;
int main() {
#ifdef STEF
freopen("input", "r", stdin);
freopen("output", "w", stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n, k;
cin >> n >> k;
vector < int > v(n);
int m = 0;
for (int &x : v) {
cin >> x;
m = max(m, x);
}
ll st = 1, dr = MAX_VAL, sol = 0;
while (st <= dr) {
ll mid = (st + dr) >> 1;
if (m > mid) {
st = mid + 1;
continue;
}
ll curSum = 0, cnt = 0;
for (int &x : v) {
if (curSum + x > mid) {
++ cnt;
curSum = x;
}
else {
curSum += x;
}
}
if (curSum) ++ cnt;
if (cnt <= k) {
sol = mid;
dr = mid - 1;
}
else {
st = mid + 1;
}
}
cout << sol << '\n';
}