제출 #1289153

#제출 시각아이디문제언어결과실행 시간메모리
1289153naneosmicFeast (NOI19_feast)C++20
0 / 100
927 ms23664 KiB
#include <bits/stdc++.h> #define int long long #define endl "\n" using namespace std; int n,k,v,c; vector<int>a; void 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)); } v=max(dp[n-1][0].first,dp[n-1][1].first); c=max(dp[n-1][0].second,dp[n-1][1].second); } signed main(){ cin>>n>>k; a.resize(n); for(int i=0;i<n;i++){ cin>>a[i]; } int l=0,r=1e18; while(l<r){ int mid=(l+r+1)/2; calc(mid); if(c>=k){ l=mid; }else{ r=mid-1; } } cout<<v+(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...