제출 #1259013

#제출 시각아이디문제언어결과실행 시간메모리
1259013DangKhoizzzzFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
73 ms7240 KiB
#include <bits/stdc++.h>
using namespace std;
long long n, q, s, t;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> q >> s >> t;
    long long stamina = 0;
    vector<long long> high(n + 1, 0);
    for(long long i=0;i<=n;i++){
        cin >> high[i];
    }
    vector<long long> diff(n+1, 0);
    for(long long i = 1; i <= n; i++) {
        diff[i] = high[i] - high[i-1];
    }
    long long high_duong=0, high_am=0;
    for(long long i=1;i<=n;i++){
        if(diff[i]>0){
            high_duong+=diff[i];
        }
        else{
            high_am+=-diff[i];
        }
    }
    while(q--){
        long long l, r, x;
        cin >> l >> r >> x;
        if(diff[l]>0){
            high_duong-=diff[l];
        }
        else{
            high_am+=diff[l];
        }
        diff[l]+=x;
        if(diff[l]>0){
            high_duong+=diff[l];
        }
        else{
            high_am+=-diff[l];
        }
        
        if(r+1<=n){
            if(diff[r+1]>0){
                high_duong-=diff[r+1];
            }
            else{
                high_am+=diff[r+1];
            }
            diff[r+1]-=x;
            if(diff[r+1]>0){
                high_duong+=diff[r+1];
            }
            else{
                high_am-=diff[r+1];
            }
        }
        stamina= -s*high_duong+t*high_am;
        cout << stamina << "\n";
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...