Submission #1209957

#TimeUsernameProblemLanguageResultExecution timeMemory
1209957hehebjp123Feast (NOI19_feast)C++17
0 / 100
45 ms7236 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back #define all(a) a.begin(),a.end() #define ii pair<ll,ll> using namespace std; const ll N=3e5+5; ll t,n,i,j,m,k; ll res=0,ans=0; ll dp[2][N],a[N]; ll check(ll k) { dp[0][0]=0; dp[1][0]=-1e18; ll res=0; for(ll i=1;i<=n;i++) { // calc dp[0][i]=max(dp[0][i-1],dp[1][i-1]+a[i]) dp[0][i]=max(dp[0][i-1],dp[1][i-1]); dp[1][i]=max(dp[0][i-1]+a[i]-k,dp[1][i-1]+a[i]); // cout<<sl[0][i]<<" "<<dp[0][i]<<" "<<sl[1][i]<<" "<<dp[1][i]<<'\n'; res=max(res,dp[1][i]); // cout<<dp[0][i]<<" "<<dp[1][i]<<'\n'; } ans=res; res+=k; ll vt=-1,sl=0; for(ll i=n;i>0;i--) { if(i!=vt-1&&res-k==dp[1][i]) { res=dp[1][i]-a[i]; sl++; vt=i; } if(i==vt-1&&res==dp[1][i]) { res=dp[1][i]-a[i]; vt=i; } } ans+=sl*k; return sl; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n>>k; for(i=1;i<=n;i++) cin>>a[i]; ll l=0,r=1e9; //return cout<<check(6),0; while(l<=r) { ll mid=(l+r)/2; ll kq=check(mid); //cout<<mid<<" "<<kq<<'\n'; if(kq==k) return cout<<ans,0; if(kq>k) l=mid+1; else r=mid-1; } cout<<0; return 0; } /* 6 1 1 -2 3 -1 5 -6 */
#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...