Submission #113111

#TimeUsernameProblemLanguageResultExecution timeMemory
113111dolphingarlicFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
125 ms11512 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#define FOR(i, x, y) for (ll i = x; i < y; i++)
typedef long long ll;
using namespace std;

ll diffs[200001];
ll n, q, s, t, wind = 0;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n >> q >> s >> t;
    ll curr;
    cin >> curr;
    FOR(i, 1, n + 1) {
        ll x;
        cin >> x;
        diffs[i] = x - curr;
        curr = x;
    }
    FOR(i, 1, n + 1) {
        if (diffs[i] > 0)
            wind -= diffs[i] * s;
        else
            wind -= diffs[i] * t;
    }

    FOR(i, 0, q) {
        ll a, b, x;
        cin >> a >> b >> x;
        if (diffs[a] > 0)
            wind += diffs[a] * s;
        else
            wind += diffs[a] * t;
        if (b != n) {
            if (diffs[b + 1] > 0)
                wind += diffs[b + 1] * s;
            else
                wind += diffs[b + 1] * t;
        }

        diffs[a] += x;
        diffs[b + 1] -= x;

        if (diffs[a] > 0)
            wind -= diffs[a] * s;
        else
            wind -= diffs[a] * t;
        if (b != n) {
            if (diffs[b + 1] > 0)
                wind -= diffs[b + 1] * s;
            else
                wind -= diffs[b + 1] * t;
        }

        cout << wind << '\n';
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...