Submission #1289156

#TimeUsernameProblemLanguageResultExecution timeMemory
1289156naneosmicFeast (NOI19_feast)C++20
18 / 100
970 ms23864 KiB
#include <bits/stdc++.h> #define int long long #define endl "\n" using namespace std; int n,k; vector<int>a; pair<int,int>calc(int lambda){ vector<vector<pair<int,int>>>dp(n,vector<pair<int,int>>(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; a.resize(n); for(int i=0;i<n;i++){ cin>>a[i]; } int l=0,r=1e18; pair<int,int>p; while(l<r){ int mid=(l+r+1)/2; p=calc(mid); if(p.second>=k){ l=mid; }else{ r=mid-1; } } cout<<p.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...