제출 #1007999

#제출 시각아이디문제언어결과실행 시간메모리
1007999LuvidiFeast (NOI19_feast)C++17
71 / 100
138 ms262144 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],p[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; p[0]=0; for (int i=1;i<=n;i++)p[i]=p[i-1]+a[i]; int cnt=0,idx; for (int i=1;i<=n;i++)if(a[i]<0){ cnt++; idx=i; } if(!cnt){ cout<<p[n]; return; } if(cnt==1){ if(k==1)cout<<max(p[n],max(p[idx-1],p[n]-p[idx])); else cout<<p[n]-a[idx]; return; } ll dp[n+1][k+1],lrg[n+1]; memset(dp,0,sizeof(dp)); lrg[0]=0; for (int i=1;i<=n;i++)lrg[i]=max(lrg[i-1],dp[i-1][0]-p[i-1]); for (int j=1;j<=k;j++){ for (int i=1;i<=n;i++){ dp[i][j]=max(dp[i-1][j],lrg[i]+p[i]); lrg[i]=max(lrg[i-1],dp[i-1][j]-p[i-1]); } } cout<<dp[n][k]; } int main() { 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...