#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |