Submission #1084073

#TimeUsernameProblemLanguageResultExecution timeMemory
1084073duytuandao21Sjeckanje (COCI21_sjeckanje)C++17
55 / 110
2071 ms9140 KiB
#include<bits/stdc++.h>
using namespace std;

const int N = 2e6 + 7;
const int inf = 1e9 + 7;
const long long infll = 1e18 + 7;

int n, q;
long long a[N], b[N], dp[N][2];

long long GetResult() {
    for (int i = 1; i < n; i++) {
        b[i] = a[i] - a[i + 1];
        dp[i][0] = dp[i][1] = -infll;
    }
    dp[1][0] = 0;
    dp[1][1] = abs(b[1]);
    for (int i = 2; i < n; i++) {
        if ((b[i - 1] < 0 && b[i] > 0) || (b[i - 1] > 0 && b[i] < 0)) {
            dp[i][1] = dp[i - 1][0] + abs(b[i]);
            dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]);
        } 
        else {
            dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]);
            dp[i][1] = max(dp[i - 1][0], dp[i - 1][1]) + abs(b[i]);
        }
    }
    return max(dp[n - 1][0], dp[n - 1][1]);
} 
int main() 
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) cin >> a[i];
    while (q--) {
        int l, r;
        long long v; 
        cin >> l >> r >> v;
        for (int i = l; i <= r; i++) a[i] += v;
        cout << GetResult();
        if (q > 0) cout << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...