제출 #1017315

#제출 시각아이디문제언어결과실행 시간메모리
1017315vjudge1Feast (NOI19_feast)C++17
100 / 100
131 ms12368 KiB
#include<bits/stdc++.h> #define int long long #define fi first #define se second #define pb push_back #define ii pair<int, int> #define sz(v) (int)v.size() #define aint(v) v.begin(), v.end() using namespace std; const int N=3e5+5, mod = 1e9+7, inf = 1e18; int n, k; int a[N]; ii dp[N][2]; ii check(int t) { dp[0][0] = {0, 0}; dp[0][1] = {a[0] - t, 1}; 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][0].fi + a[i] - t, dp[i - 1][0].se + 1), make_pair(dp[i - 1][1].fi + a[i], dp[i - 1][1].se)); } return max(dp[n - 1][0], dp[n - 1][1]); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i=0; i<n; i++) cin >> a[i]; int lo = 0; int hi = 1e18; while (lo < hi) { int mid = (lo + hi + 1) / 2; check(mid).se >= k ? lo = mid : hi = mid - 1; } cout << check(lo).first + lo * k; }
#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...