Submission #1209963

#TimeUsernameProblemLanguageResultExecution timeMemory
1209963sadthuffFeast (NOI19_feast)C++20
100 / 100
184 ms12148 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn=3*1e5+5; int n,k,a[maxn]; pair<int,int> solve(int lambda){ pair<int,int>dp[n][2]; dp[0][0]={0,0}; dp[0][1]={a[0]-lambda,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].first+a[i]-lambda,dp[i-1][0].second+1),make_pair(dp[i-1][1].first+a[i],dp[i-1][1].second)); } return max(dp[n-1][0],dp[n-1][1]); } signed main(){ cin >> n >> k; for( int i=0 ; i < n ; ++i){ cin >> a[i]; } int l=0,r=1e18; while (l<r){ int mid=(l+r+1)/2; if (solve(mid).second >= k){ l=mid; } else r=mid-1; } cout << solve(l).first+k*l; }
#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...