Submission #1152557

#TimeUsernameProblemLanguageResultExecution timeMemory
1152557itslqSjeckanje (COCI21_sjeckanje)C++20
15 / 110
2098 ms211800 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int N;
vector<int> A;

int solve() {
    int val[N][N], dp[N];
    pair<int, int> interval[N][N];

    // for (int i = 0; i < N; i++) cout << A[i] << " ";
    // cout << endl;

    for (int i = 0; i < N; i++) {
        interval[i][i] = make_pair(A[i], A[i]);
        val[i][i] = 0;
    }

    for (int i = 1; i < N; i++) {
        // cout << endl;
        for (int j = 0; j + i < N; j++) {
            interval[j][j + i] = make_pair(
                max(interval[j][j + i - 1].first, A[j + i]),
                min(interval[j][j + i - 1].second, A[j + i])
            );
            val[j][j + i] = interval[j][j + i].first - interval[j][j + i].second;
            // cout << j << "/" << j + i << "/" << interval[j][j + i].first << "/" << interval[j][j + i].second << " - ";
        }
    }

    for (int i = 0; i < N; i++) {
        dp[i] = 0;
        for (int j = 0; j < i; j++) {
            dp[i] = max(dp[i], (j ? dp[j - 1] : 0) + val[j][i]);
        }
    }

    return dp[N - 1];
}


signed main() {
    int Q, l, r, x;
    cin >> N >> Q;
    A = vector<int>(N);
    for (int i = 0; i < N; i++) cin >> A[i];

    while (Q--) {
        cin >> l >> r >> x;
        --l; --r;
        for (int i = l; i <= r; i++) A[i] += x;
        cout << solve() << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...