Submission #1209933

#TimeUsernameProblemLanguageResultExecution timeMemory
1209933cbd_6969Feast (NOI19_feast)C++20
100 / 100
155 ms12148 KiB
#include<iostream> #include<vector> using namespace std; #define int long long const int N=3e5+5; int n, k; int a[N]; pair<int, int> lambda(int el){ pair<int, int> dp0[n+1], dp1[n+1]; dp0[0]={0, 0}; dp1[0]={-1e18, 0}; for(int i=1; i<=n; i++){ dp1[i]=max(make_pair(dp0[i-1].first+a[i]-el, dp0[i-1].second+1), make_pair(dp1[i-1].first+a[i], dp1[i-1].second)); dp0[i]=max(dp1[i], dp0[i-1]); } return max(dp0[n], dp1[n]); } int32_t main(){ cin>>n>>k; for(int i=1; i<=n; i++){ cin>>a[i]; } int l=0, r=1e15; while(l<r){ int el=(l+r+1)/2; if(lambda(el).second>=k){ l=el; } else r=el-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...