제출 #1316583

#제출 시각아이디문제언어결과실행 시간메모리
1316583gamigafyFeast (NOI19_feast)C++20
100 / 100
927 ms23932 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define sz(x) (int)(x).size() void solve() { int n, k; cin >> n >> k; vector<ll> a(n); for (auto &x : a) cin >> x; auto chk = [&](ll lam) { vector dp(n + 1, vector<pair<ll, int>>(2, {-1E18, -1E18})); dp[0][0] = {0, 0}; for (int i = 0; i < n; i++) { dp[i + 1][0] = max(dp[i][0], dp[i][1]); dp[i + 1][1] = max( make_pair(dp[i][1].first + a[i], dp[i][1].second), make_pair(dp[i][0].first + a[i] - lam, dp[i][0].second + 1) ); } return max(dp[n][0], dp[n][1]); }; ll l = 0, r = 1E18; while (l < r) { ll mid = (l + r + 1) / 2; auto [_, cnt] = chk(mid); if (cnt >= k) { l = mid; } else { r = mid - 1; } } cout << chk(l).first + l * k << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while (t--) solve(); 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...