제출 #1298673

#제출 시각아이디문제언어결과실행 시간메모리
1298673nathlol2Feast (NOI19_feast)C++20
18 / 100
70 ms12132 KiB
#include <bits/stdc++.h> #define int long long using namespace std; const int N = 333333; int n, k, a[N]; pair<int, int> dp[N][2]; pair<int, int> solve(int x){ dp[1][0] = {0, 0}; dp[1][1] = {a[1] - x, 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][1].first + a[i], dp[i - 1][1].second), make_pair(dp[i - 1][0].first + a[i] - x, dp[i - 1][0].second + 1)); } return max(dp[n][0], dp[n][1]); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> k; for(int i = 1;i<=n;i++) cin >> a[i]; int l = 0, r = 1e18, ans = -1; while(l < r){ int md = (l + r + 1) / 2; if(solve(md).second >= k){ ans = md; l = md + 1; }else{ r = md - 1; } } cout << solve(ans).first + k * ans; }
#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...