Pagini recente » Cod sursa (job #165124) | Monitorul de evaluare | Cod sursa (job #2829280) | Cod sursa (job #3126831) | Cod sursa (job #2778912)
#include <algorithm>
#include <iostream>
#define MAXN 200005
using namespace std;
int n, v[MAXN], k;
int simulate(long long x) {
int dist = 0, cnt = 0, pos = 0;
while (pos < n) {
cnt++;
dist = 0;
while (pos < n && dist <= x) {
pos++;
dist += v[pos];
}
dist = 0;
while (pos < n && dist <= x) {
dist += v[pos];
pos++;
}
if (dist > x)
pos--;
}
return cnt;
}
void cb(long long st, long long dr) {
int last = 0, lastorase;
while (st <= dr) {
long long mid = (st + dr) / 2;
int ans = simulate(mid);
if (ans <= k) {
last = mid;
lastorase = ans;
dr = mid - 1;
} else
st = mid + 1;
}
cout << last << ' ' << lastorase;
}
int main() {
freopen("orase1.in", "r", stdin);
freopen("orase1.out", "w", stdout);
cin >> n >> k;
for (int i = 1; i < n; i++)
cin >> v[i];
cb(1, 2000000001);
return 0;
}