제출 #1180003

#제출 시각아이디문제언어결과실행 시간메모리
1180003miniobFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
181 ms7272 KiB
#include <bits/stdc++.h>
using namespace std;

long long a[200007];
long long diff[200007];

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    long long n, q, s, t;
	cin >> n >> q >> s >> t;
    for (long long i = 0; i <= n; i++)
    {
        cin >> a[i];
    }
    for (long long i = 1; i <= n; i++)
    {
        diff[i] = a[i] - a[i-1];
    }
    long long ans = 0;
    for (long long i = 1; i <= n; i++)
    {
        if (diff[i] > 0)
        {
        	ans += -s * diff[i];  
        }
        else
        {
        	ans += t * (-diff[i]); 
        }
    }
   
    while (q--)
    {
        long long l, r, x;
        cin >> l >> r >> x;
        if (diff[l] > 0)
        {
        	ans -= -s * diff[l];
        }
        else
        {
        	ans -= t * (-diff[l]);
        }
        diff[l] += x;
        if (diff[l] > 0)
        {
        	ans += -s * diff[l];
        }
        else
        {
        	ans += t * (-diff[l]);
        }
        if (r < n) 
        {
            if (diff[r+1] > 0)
            {
            	ans -= -s * diff[r+1];
            }
            else
            {
            	ans -= t * (-diff[r+1]);
            }
            diff[r+1] -= x;
            if (diff[r+1] > 0)
            {
            	ans += -s * diff[r+1];
            }
            else
            {
            	ans += t * (-diff[r+1]);
            }
        }
        
        cout << ans << endl;
    }
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...