Submission #1131292

#TimeUsernameProblemLanguageResultExecution timeMemory
1131292Quan2003Feast (NOI19_feast)C++20
41 / 100
1096 ms22484 KiB
#include "bits/stdc++.h" using namespace std; #define sz(x) int(x.size()) #define mp make_pair const int64_t oo = 1e16; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, K; cin >> N >> K; vector<int>a(N + 1); for(int i = 1; i <= N; i++) { cin >> a[i]; } auto check = [&](int64_t amt) { vector<vector<pair<int64_t, int>>>dp(N + 1, vector<pair<int64_t, int>>(2, {-oo, 0})); dp[0][0].first = 0; for(int i = 1; i <= N; i++) { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); dp[i][1] = max(mp(dp[i - 1][0].first + a[i] - amt, dp[i - 1][0].second + 1), mp(dp[i - 1][1].first + a[i], dp[i - 1][1].second)); } return max(dp[N][1], dp[N][0]); }; int64_t lo = 0, hi = oo; while(lo < hi) { int64_t mid = (lo + hi + 1) / 2; check(mid).second >= K ? lo = mid : hi = mid - 1; } auto [c, d] = check(lo); cout << c + d * lo << '\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...