Submission #1134586

#TimeUsernameProblemLanguageResultExecution timeMemory
1134586LuvidiFeast (NOI19_feast)C++17
100 / 100
143 ms12168 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back void solve() { int n,k; cin>>n>>k; ll a[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; auto calc=[&](ll x){ pll dp[n+1][2]; dp[0][0]={0,0}; dp[0][1]={-1e18,0}; 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].fs-x,dp[i-1][0].sc+1),dp[i-1][1]); dp[i][1].fs+=a[i]; } return max(dp[n][0],dp[n][1]); }; ll l=0,r=1e18; while(l<r){ ll m=(l+r+1)/2; if(calc(m).sc>=k)l=m; else r=m-1; } cout<<calc(l).fs+l*k<<'\n'; } int main() { #ifdef FPO freopen("in","r",stdin); freopen("out","w",stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#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...