Submission #1300883

#TimeUsernameProblemLanguageResultExecution timeMemory
1300883PakinDioxideFeast (NOI19_feast)C++17
100 / 100
135 ms12164 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int mxN = 3e5+5; int n, k; ll a[mxN]; int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i]; auto solve = [&] (ll ld) { pair <ll, ll> dp[n+1][2]; dp[1][0] = make_pair(0, 0); dp[1][1] = make_pair(a[1] - ld, 1); for (int i = 2; i <= n; i++) { dp[i][0] = max(dp[i-1][0], dp[i-1][1]); dp[i][1] = max(make_pair(dp[i-1][0].first + a[i] - ld, dp[i-1][0].second + 1), make_pair(dp[i-1][1].first + a[i], dp[i-1][1].second)); } return max(dp[n][0], dp[n][1]); }; ll L = 0, R = 1e18, ans = 0; while (L <= R) { ll ld = L + (R-L)/2; pair <ll, ll> v = solve(ld); if (v.second >= k) ans = ld, L = ld+1; else R = ld-1; } cout << solve(ans).first + ans * k << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...