Submission #1165629

#TimeUsernameProblemLanguageResultExecution timeMemory
1165629spycoderytFeast (NOI19_feast)C++20
0 / 100
78 ms10816 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
/*
instead of enforcing K, we find the lambda that produces K, then just do cost + lambda * K

*/
const int N = 3e5+5;
int a[N],dp[2005][2005][2];
int32_t main() {
    int n,k;
    cin >> n >> k;
    for(int i = 1;i<=n;i++)cin>>a[i];
    for(int j = 1;j<=k;j++) {
        for(int i = j;i<=n;i++) {
            dp[i][j][0] = max(dp[i-1][j][0],dp[i-1][j][1]);
            dp[i][j][1] = max(dp[i-1][j-1][0] + a[i], dp[i-1][j][1] + a[i]);
            // cerr << i << " " << j << " " << dp[i][j][0] << " " << dp[i][j][1]<<"\n";
        }
    }
    cout << max(dp[n][k][0],dp[n][k][1]);
}
#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...