제출 #1368347

#제출 시각아이디문제언어결과실행 시간메모리
1368347AgageldiFeast (NOI19_feast)C++20
0 / 100
22 ms10544 KiB
#include <bits/stdc++.h>
using namespace std;

#define N 500005

const int inf = INT_MAX;
const int M = 998244353;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

int tc = 1, n, a[N], k, sum, dp[2001][2001], ans;
deque <int> d = {0};

signed main() {
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n >> k;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        int ok1 = (a[i] >= 0);
        int ok2 = (sum >= 0);
        if(ok1 == ok2) {
            sum += a[i];
        }
        else {
            d.push_back(sum);
            sum = a[i];
        }
        ans = max(ans,sum);
    }
    d.push_back(sum);
    n = (int)d.size() - 1;
    for(int i = 1; i <= n; i++) {
        dp[i][1] = max(d[i], dp[i - 1][1]);
    }
    for(int i = 1; i <= n; i++) {
        for(int j = 2; j <= min(i,k); j++) {
            dp[i][j] = dp[i - 1][j];
            int sum = 0;
            for(int l = i; l >= j; l--) {
                sum += d[l];
                dp[i][j] = max(dp[i][j],dp[l - 1][j - 1] + sum);
            }
            ans = max(ans, dp[i][j]);
        }
    }
    cout << ans << '\n';
    return 0;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…