Submission #1210557

#TimeUsernameProblemLanguageResultExecution timeMemory
1210557iicuongFeast (NOI19_feast)C++20
100 / 100
859 ms22740 KiB
#include <bits/stdc++.h> using namespace std; int n, k; pair<long long, long long> sybau(long long lambda, const vector<int>& a){ vector<vector<pair<long long, long long>>> dp(n, vector<pair<long long, long long>>(2)); dp[0][0] = {0, 0}; dp[0][1] = {a[0] - lambda, 1}; for(int i = 1; i < n; ++i){ dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); pair<long long, long long> op1 = {dp[i - 1][0].first + a[i] - lambda, dp[i - 1][0].second + 1}; pair<long long, long long> op2 = {dp[i - 1][1].first + a[i], dp[i - 1][1].second}; dp[i][1] = max(op1, op2); } return max(dp[n - 1][0], dp[n - 1][1]); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; vector<int> a(n); for(int& x : a) cin >> x; long long l = 0, r = 1e18, m; while(l < r){ m = (l + r + 1) / 2; if(sybau(m, a).second >= k) l = m; else r = m - 1; } auto ans = sybau(l, a); cout << ans.first + l * k << '\n'; return 0; }
#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...