#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = 1e18;
template<class T>
void chmax(T &x, T y) { x = max(x, y); }
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, k; cin >> n >> k;
assert(n <= 100 && k <= 100);
vector<ll> a(n);
for (ll &x : a) cin >> x;
vector dp(n + 1, vector(k + 1, array<ll, 2>{-INF, -INF})); // pos, taken, closed/open
dp[0][0][0] = 0;
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= k; j++) {
chmax(dp[i][j][0], dp[i][j][1]);
if (j < k) chmax(dp[i][j + 1][1], dp[i][j][0]);
if (i < n) {
chmax(dp[i + 1][j][0], dp[i][j][0]);
chmax(dp[i + 1][j][1], dp[i][j][1] + a[i]);
}
}
}
cout << dp[n][k][0] << '\n';
}
| # | 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... |