제출 #1156972

#제출 시각아이디문제언어결과실행 시간메모리
1156972EsgeerFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
63 ms5704 KiB
#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize("O3")
#define vi vector<int>
#define vb vector<bool>
#define F(i, s, e) for(int i = s; i < e; i++)
#define sp <<' '<<
#define pii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define vvi vector<vi>
#define vpi vector<pii>
#define vvpi vector<vpi>
#define endl '\n'
 
const int mod = 1e9 + 7;
 
using namespace std;
 
const int N = 1e5+5;
const int inf = 1e15;

void solve() {
    int n, m, X, Y;
    cin >> n >> m >> X >> Y;
    n++;
    vi a(n+2, 0);
    F(i, 0, n) cin >> a[i];
    for(int i = n-1; i > 0; i--) a[i] -= a[i-1];

    int ans = 0;
    F(i, 1, n) {
        if(a[i] > 0) ans -= X * a[i];
        else ans -= Y * a[i];
    }
    F(i, 0, m) {
        int l, r, v;
        cin >> l >> r >> v;
        if(l > 0) {
            if(a[l] > 0) ans += X * a[l];
            else ans += Y * a[l];
        }
        if(r+1 < n) {
            if(a[r+1] > 0) ans += X * a[r+1];
            else ans += Y * a[r+1];
        }
        a[l] += v;
        a[r+1] -= v;
        if(l > 0) {
            if(a[l] > 0) ans -= X * a[l];
            else ans -= Y * a[l];
        }
        if(r+1 < n) {
            if(a[r+1] > 0) ans -= X * a[r+1];
            else ans -= Y * a[r+1];
        }
        cout << ans << endl;
    }
}
 
int32_t main() {
    cin.tie(0); ios_base::sync_with_stdio(0);
    #ifdef Local
        freopen("local.in", "r", stdin);
        freopen("local.out", "w", stdout);
    #endif
    int t = 1;
    //cin >> t;
    while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...