Submission #1198736

#TimeUsernameProblemLanguageResultExecution timeMemory
1198736tab1540Feast (NOI19_feast)C++20
0 / 100
1096 ms11024 KiB
#include <iostream> using namespace std; int arr[300009]; int n, k; pair<long long, int> dp[300009][2]; pair<long long, int> gaymen(int pen) { for (int i = 1; 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 + arr[i], dp[i - 1][1].second), // max( make_pair(dp[i - 1][0].first + arr[i] - pen, dp[i - 1][0].second + 1) // make_pair(dp[i - 1][1].first + arr[i] - pen, dp[i - 1][1].second + 1) // ) ); } return max( dp[n][1], dp[n][0] ); } long long r = 1; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); dp[0][1].first = -(1ll << 60); cin >> n >> k; for (int i = 1; i<= n; i++) { cin >> arr[i]; r += abs(arr[i]); } long long l = 0; while (l < r) { int mid = (l + r + 1) >> 1; if (gaymen(mid).second >= k) { l = mid; } else { r = mid - 1; } } cout << gaymen(l).first + l * k; 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...