이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define pb push_back
#define fs first
#define sc second
#define mp make_pair
using namespace std;
 
int n,q,s,t;
int a[200005];
int sim[200005];
pair<int,int> diff;
int main(){
    cin >> n >> q >> s >> t;
    for(int i = 0; i < n + 1; i++){
        cin >> a[i];
    }
    diff = mp(0,0);
    for(int i = 0; i < n; i++){
        sim[i] = a[i + 1] - a[i];
        if(sim[i] > 0){
            diff.fs = diff.fs + sim[i];
        }else{
            diff.sc = diff.sc + abs(sim[i]);
        }
    }
    for(int i = 0; i < q; i++){
        int a,b,x; cin >> a >> b >> x;
        
        if(a != 0){
            if(sim[a - 1] > 0){
                diff.fs -= sim[a - 1];
            }else{
                diff.sc -= abs(sim[a - 1]);
            }
         //   if(i == 2) cout << a << " " << sim[a - 1] << " " << diff.sc  << " here\n";
            sim[a - 1] += x;
            if(sim[a - 1] > 0){
                diff.fs += sim[a - 1];
            }else{
                diff.sc += abs(sim[a - 1]);
            }
        }
        if(b != n){
            if(sim[b] > 0){
                diff.fs -= sim[b];
            }else{
                diff.sc -= abs(sim[b]);
            }
            sim[b] -= x;
            if(sim[b] > 0){
                diff.fs += sim[b];
            }else{
                diff.sc += abs(sim[b]);
            }
        }
    //    cout << diff.fs << " " << diff.sc << " ini\n";
        cout << - diff.fs * s + diff.sc * t << "\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... |