제출 #305780

#제출 시각아이디문제언어결과실행 시간메모리
305780couplefireFoehn Phenomena (JOI17_foehn_phenomena)C++17
0 / 100
565 ms11512 KiB
#include <bits/stdc++.h>
using namespace std;
#define MAXN 200005

long long dif[MAXN];
int arr[MAXN];
int n, q, s, t;

int main(){
    // freopen("a.in", "r", stdin);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> q >> s >> t; t = -t;
    dif[0] = 0;
    for(int i = 0; i<=n; i++){
        int a; cin >> a;
        arr[i] = a;
        if(i >= 1) dif[i] = a-arr[i-1];
    }
    // for(int i = 1; i<=n; i++){
    //     cout << dif[i] << " ";
    // }
    // cout << endl;
    long long ans = 0;
    for(int i = 1; i<=n; i++){
        if(dif[i]>0) ans -= s*dif[i];
        else ans += t*dif[i];
    }
    // cout << ans << endl;
    while(q--){
        int l, r, x; cin >> l >> r >> x;
        int curl = dif[l];
        dif[l]+=x;
        if(curl > 0) ans += s*curl;
        else ans -= t*curl;
        if(dif[l]>0) ans -= s*dif[l];
        else ans += t*dif[l];
        if(r == n){
            cout << ans << endl;
            continue;
        }
        int curr = dif[r+1];
        dif[r+1] -= x;
        if(curr > 0) ans += s*curr;
        else ans -= t*curr;
        if(dif[r+1] > 0) ans -= s*dif[r+1];
        else ans += t*dif[r+1];
        cout << ans << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...