제출 #1319790

#제출 시각아이디문제언어결과실행 시간메모리
1319790vaishakhvFeast (NOI19_feast)C++20
59 / 100
244 ms327680 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define eb emplace_back // faster than push_back xD

// pbds UwU
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define oset tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> // use pair for ms

// my io library :D
#define m1(x) template<class T, class... U> void x(T&& a, U&&... b)
#define m2(x) (ll[]){(x forward<U>(b),0)...}

m1(pr){cout << forward<T>(a);  m2(cout << " " <<); cout << "\n";}
m1(re){cin >> forward<T>(a); m2(cin >>);}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll n, k; re(n, k);
    vector<ll> a(n);
    for (ll i{}; i < n; i++) re(a[i]);

    vector<vector<vector<ll>>> dp(n+1, vector<vector<ll>>(k+1, vector<ll>(2, -1e18)));
    dp[0][0][0] = 0;
    for (ll i = 1; i <= n; i++){
        for (ll j{}; j <= k; j++){
            dp[i][j][0] = max(dp[i-1][j][0], dp[i-1][j][1]);
            if (j>0) dp[i][j][1] = max(dp[i][j][1],dp[i-1][j-1][0]+a[i-1]);
            dp[i][j][1] = max(dp[i][j][1],dp[i-1][j][1]+a[i-1]);
        }
    }

    ll ans = 0;
    for (ll i{}; i <= k; i++){
        ans = max(ans,max(dp[n][i][0], dp[n][i][1]));
    }

    pr(ans);
}
#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...