Submission #1116476

#TimeUsernameProblemLanguageResultExecution timeMemory
1116476staszic_ojuzFoehn Phenomena (JOI17_foehn_phenomena)C++17
0 / 100
366 ms5568 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n, q, s, t;
    cin >> n >> q >> s >> t;
    vector<int64_t> amplitudes;
    int64_t temps[n + 1] = {0};
    int l, r, x, a = 0;
    cin >> x;
    a = x;
    amplitudes.push_back(x);
    for(int i = 1; i <= n; i++){
        cin >> x;
        amplitudes.push_back(x - a);
        a = x;
    }
    temps[0] = 0;
    for(int i = 1; i <= n; i++){
        if(amplitudes[i] < 0){
            temps[i] = temps[i - 1] - t * amplitudes[i];
        }else{
            temps[i] = temps[i - 1] - s * amplitudes[i];
        }
    }
    for(int k = 0; k < q; k++){
        cin >> l >> r >> x;
        if(x != 0){
            if(l <= n){
                if(amplitudes[l] >= 0){
                    temps[n] -= x * s;
                }else if(amplitudes[l] > -x){
                    temps[n] -= (-amplitudes[l] * t + (x + amplitudes[l]) * s);
                }else{
                    temps[n] -= x * t;
                }
            }
            if(r <= n){
                if(amplitudes[r + 1] <= 0){
                    temps[n] += x * t;
                }else if(amplitudes[r + 1] < x){
                    temps[n] += amplitudes[r + 1] * s + (x - amplitudes[r + 1]) * t;
                }else{
                    temps[n] += x * s;
                }
            }
        }

        amplitudes[l] += x;
        amplitudes[r + 1] -= x;
        cout << temps[n] << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...