Submission #1209975

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