Submission #1255279

#TimeUsernameProblemLanguageResultExecution timeMemory
1255279mountainsaltFeast (NOI19_feast)C++20
4 / 100
57 ms9796 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 3e5 + 5; ll n, k, a[N], p[N]; pair <ll, ll> solve(int lmb){ pair <ll, ll> mx = {0, 0}; vector <pair <ll, ll>> dp(n + 1); for (int i = 1; i <= n; i++) { dp[i] = max(dp[i - 1], {mx.first + p[i] - lmb, mx.second + 1}); mx = max(mx, {dp[i].first - p[i], dp[i].second}); } dp[n].first += dp[n].second * lmb; return dp[n]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; p[i] = p[i - 1] + a[i]; } ll l = 1, r = 1e9, mid = 0; pair <ll, ll> ans = {0, 0}; while (l <= r) { mid = l + (r - l) / 2; ans = solve(mid); if (ans.second > k) l = mid + 1; else if (ans.second <= k) r = mid - 1; } cout << ans.first; }
#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...