Submission #1173471

#TimeUsernameProblemLanguageResultExecution timeMemory
1173471ezzzayFeast (NOI19_feast)C++20
0 / 100
1 ms324 KiB
#include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define int long long const int N=4000; int a[N]; int n,k; pair<int,int> fun(int lmd){ pair<int,int>dp[N][2]; for(int i=0;i<N;i++){ for(int j=0;j<2;j++)dp[i][j]={0,0}; } dp[1][0]={0,0}; dp[1][1]= {a[1]-lmd,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].ff+a[i] - lmd, dp[i - 1][0].second + 1), make_pair(dp[i - 1][1].first + a[i], dp[i - 1][1].second)); } return max({dp[n][0],dp[n][1]}); } signed main(){ cin>>n>>k; for(int i=1;i<=n;i++)cin>>a[i]; int hi=1e18; int lo=0; while(hi>=lo){ int mid=(hi+lo)/2; fun(mid).ss>= k ? lo=mid+1 : hi=mid-1; } cout << max(0ll,fun(hi).first + hi * k) << endl; }
#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...