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