제출 #1255295

#제출 시각아이디문제언어결과실행 시간메모리
1255295mountainsaltFeast (NOI19_feast)C++20
59 / 100
66 ms9800 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(ll 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}); } 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 = 0, r = 1e18, ans = 0; while (l <= r) { ll mid = l + (r - l) / 2; pair <ll, ll> cur = solve(mid); if (cur.second > k) l = mid + 1; else r = mid - 1, ans = mid; } cout << solve(ans).first + k * ans; }
#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...