제출 #1340674

#제출 시각아이디문제언어결과실행 시간메모리
1340674aapoorvFeast (NOI19_feast)C++20
59 / 100
285 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;



#define int long long int
#define p 1000000007

int f(int i, int cnt, int running, int n, int k, vector<int> &a, vector<vector<vector<int>>> &dp) {
    if (i == n) return 0;
    if (dp[i][cnt][running] != -1) return dp[i][cnt][running];
    int res = 0;
    if (cnt < k) {
        res = max(res, a[i] + f(i + 1, cnt + 1, 1, n, k, a, dp));
    }
    res = max(res, f(i + 1, cnt, 0, n, k, a, dp));
    if (running) res = max(res, a[i] + f(i + 1, cnt, 1, n, k, a, dp));
    return dp[i][cnt][running] = res;
}

void solve() {
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for (int &i : a)
        cin >> i;
    vector<vector<vector<int>>> dp(n, vector<vector<int>> (k + 1, vector<int> (2, -1)));
    cout << f(0, 0, 0, n, k, a, dp) << 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...