Submission #1131308

#TimeUsernameProblemLanguageResultExecution timeMemory
1131308Quan2003Feast (NOI19_feast)C++20
100 / 100
147 ms10824 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); for(int i = 0; i < N; i++) { cin >> a[i]; } auto check = [&](int64_t amt) { pair<int64_t, int>dp[N][2]; dp[0][0] = mp(0, 0); dp[0][1] = mp(a[0] - amt, 1); 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][1], dp[N - 1][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...