Submission #1340719

#TimeUsernameProblemLanguageResultExecution timeMemory
1340719aapoorvFeast (NOI19_feast)C++20
59 / 100
246 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;



#define int long long int
#define p 1000000007

void solve() {
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for (int &i : a)
        cin >> i;
    vector<vector<vector<int>>> dp(n + 1, vector<vector<int>> (k + 1, vector<int> (2, 0)));
    for (int i = n - 1 ; i >= 0 ; i--) {
        for (int j = k ; j >= 0 ; j--) {
            for (int r = 0 ; r < 2 ; r++) {
                if (j + 1 <= k) dp[i][j][r] = max(dp[i][j][r], a[i] + dp[i + 1][j + 1][1]);
                dp[i][j][r] = max(dp[i][j][r], dp[i + 1][j][0]);
                if (r) dp[i][j][r] = max(dp[i][j][r], a[i] + dp[i + 1][j][1]);
            }
        }
    }
    cout << dp[0][0][0] << endl;
    
}   

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    cout << setprecision(10);
    // int t;
    // cin >> t;
    // while (t--)
        solve();
    cerr << "time taken : " << (float)clock() / CLOCKS_PER_SEC << " secs" << endl;

}
#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...