Submission #1320990

#TimeUsernameProblemLanguageResultExecution timeMemory
1320990tolgaFeast (NOI19_feast)C++20
0 / 100
72 ms11964 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' int n, k; vector<ll> a; pair<ll, int> check(ll cost) { vector<array<pair<ll, int>, 2>> dp(n + 1); dp[1][1] = {a[0] - cost, 1}; for (int i = 1; i <= n; i++) { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); dp[i][1] = max(pair<ll, int>{dp[i - 1][0].first + a[i - 1] + cost, dp[i - 1][0].second + 1}, pair<ll, int>{dp[i - 1][1].first + a[i - 1], dp[i - 1][1].second}); } return max(dp[n][0], dp[n][1]); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); cin >> n >> k; a.resize(n); for (int i = 0; i < n; i++) cin >> a[i]; ll left = 0, right = 5 + 3e5; while (left <= right) { ll mid = (left + right) / 2; if (check(mid).second >= k) right = mid - 1; else left = mid + 1; } cout << check(right).first << endl; }
#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...