Submission #1289941

#TimeUsernameProblemLanguageResultExecution timeMemory
1289941chuyenluagaFeast (NOI19_feast)C++20
18 / 100
60 ms12152 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<ll,ll> #define fi first #define se second const int maxn = 3e5 + 5; ll a[maxn]; pii dp[maxn][2]; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL);cout.tie(NULL); ll n,k; cin >> n >> k; for (int i = 1;i<=n;i++){ cin >> a[i]; } ll s = 0; ll l = 0, r = 1e18; while (l <= r){ ll m = (l+r) /2; cerr << m << endl; dp[1][0] = {0,0}; dp[1][1] = {a[1]-m,1}; for (int i = 2;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].first - m + a[i], dp[i-1][0].second+1), make_pair(dp[i-1][1].first + a[i], dp[i-1][1].second)); } pii ans = max(dp[n][0],dp[n][1]); if (ans.second >= k){ s = ans.first + m * k; l = m+1; } else r = m - 1; } cout << s; }
#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...