Submission #857626

#TimeUsernameProblemLanguageResultExecution timeMemory
857626hungntFeast (NOI19_feast)C++14
71 / 100
286 ms133164 KiB
#include<bits/stdc++.h> using namespace std; const int N = 300005; int n, k; int a[N]; long long dp[2003][2003][2]; void sub3() { long long ans = 0, mn = 0, s = 0; for(int i = 1; i <= n; i++) { s += a[i]; mn = min(mn, s); ans = max(ans, s - mn); } cout << ans; } void sub6() { long long ans = 0; dp[0][0][1] = 0; dp[0][0][0] = 0; for(int i = 1; i <= n; i++) { dp[i][0][0] = 0; for(int j = 1; j <= k; j++) { dp[i][j][0] = max(dp[i - 1][j][1], dp[i - 1][j][0]); dp[i][j][1] = max(dp[i - 1][j][1], dp[i - 1][j - 1][0]) + a[i]; ans = max({ans, dp[i][j][0], dp[i][j][1]}); } } cout << ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> k; int cntam = 0; for(int i = 1; i <= n; i++) { cin >> a[i]; cntam += (a[i] < 0); } if(k == 1) { sub3(); return 0; } if(cntam <= 1) { long long ans = 0; for(int i = 1; i <= n; i++) if(a[i] > 0) ans += a[i]; cout << ans; return 0; } sub6(); return 0; }
#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...