This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define II pair<int, int>
#define fs first
#define sc second
#define endl '\n'
#define mp(x, y) make_pair(x, y)
#define sz(x) ((int) (x.size()))
#define forlr(i, l, r) for(int i = l; i <= r; ++i)
#define forrl(i, r, l) for(int i = r; i >= l; --i)
#define show(v) for(auto i : v) cout << i << " "; cout << endl;
#define showlr(v, l, r) for (int i = l; i <= r; i++) cout << v[i] << " "; cout << endl;
#define all(v) v.begin(), v.end()
#define Unique(v) v.erase(unique(all(v)), v.end());
const long long LINF = 1ll << 60;
const int INF = 1 << 30;
const int N = 3e5 + 5;
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, k;
int a[N], p[N];
II choose(II A, II B) {
if(A.fs == B.fs) return A.sc < B.sc ? A : B;
return A.fs > B.fs ? A : B;
}
II calc(int cost) {
II take = {0, 0}, best = {0, 0};
forlr(i, 1, n) {
best = choose(best, {take.fs + p[i] - cost, take.sc + 1});
take = choose(take, {best.fs - p[i], best.sc});
}
return best;
}
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n >> k;
forlr(i, 1, n) {
cin >> a[i];
p[i] = p[i - 1] + a[i];
}
int ans = 0;
int lo = 0, hi = 3e14;
while(lo <= hi) {
int mid = (lo + hi) >> 1;
II v = calc(mid);
if(v.sc > k) lo = mid + 1;
else hi = mid - 1, ans = v.fs + k * mid;
}
cout << ans << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |