Submission #1234626

#TimeUsernameProblemLanguageResultExecution timeMemory
1234626karen671Feast (NOI19_feast)C++20
59 / 100
210 ms327680 KiB
#include <chrono>
#include <iostream>
#include <random>
#include <cmath>
#include <ostream>
#include <type_traits>

constexpr int64_t inf = 100000000ll;

int main() {
    uint32_t n, k;
    std::cin >> n >> k;

    std::vector<int64_t> a(n);
    for (uint32_t i = 0; i < n; i++) {
        std::cin >> a[i];
    }

    std::vector<std::vector<int64_t> > dm(n + 1, std::vector<int64_t>(k + 1, -inf));
    std::vector<std::vector<int64_t> > locmax(n + 1, std::vector<int64_t>(k + 1, -inf));

    dm[0][0] = 0;
    for (uint32_t i = 1; i <= n; i++) {
        for (uint32_t j = 0; j <= k; j++) {
            dm[i][j] = dm[i - 1][j];

            if (j > 0) {
                locmax[i][j] = std::max(locmax[i - 1][j] + a[i - 1],
                                        dm[i - 1][j - 1] + a[i - 1]);
                dm[i][j] = std::max(dm[i][j], locmax[i][j]);
            }
        }
    }

    int64_t maxx = -inf;
    for (uint32_t i = 0; i <= k; i++) {
        maxx = std::max(maxx, dm[n][i]);
    }

    std::cout << maxx;
    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...