Submission #1341614

#TimeUsernameProblemLanguageResultExecution timeMemory
1341614orgiloogiiFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
216 ms7200 KiB
#include <bits/stdc++.h>
#define int long long
#define ff first
#define ss second
using namespace std;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n, q, s, t;
    cin >> n >> q >> s >> t;
    int a[n + 1];
    for (int i = 0;i <= n;i++) {
        cin >> a[i];
    }   
    int ans = 0;
    int diff[n + 2] = {0};
    for (int i = 1;i <= n;i++) {
        diff[i] = a[i] - a[i - 1];
    }
    // cout << ans << endl;
    for (int i = 1;i <= n;i++) {
        if (diff[i] > 0) {
            ans -= diff[i] * s;
        }
        else {
            ans -= diff[i] * t;
        }
        // cout << ans << endl;
    }
    // for (int i = 1;i <= n;i++) {
    //     cout << diff[i] << ' ';
    // }
    // cout << endl;
    // cout << ans << endl;
    while (q--) {
        int l, r, k;
        cin >> l >> r >> k;
        if (diff[l] > 0) {
            ans += s * diff[l];   
        } else {
            ans += t * diff[l];
        }
        diff[l] += k;
        if (diff[l] > 0) {
            ans -= s * diff[l];   
        } else {
            ans -= t * diff[l];
        }
        if (r + 1 <= n) {
            if (diff[r + 1] > 0) {
                ans += s * diff[r + 1];   
            } else {
                ans += t * diff[r + 1];
            }
            diff[r + 1] -= k;
            if (diff[r + 1] > 0) {
                ans -= s * diff[r + 1];   
            } else {
                ans -= t * diff[r + 1];
            }
        }
        cout << ans << endl;
        // for (int i = 1;i <= n;i++) {
        //     cout << diff[i] << ' ';
        // }
        // cout << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...