思路:前缀和
using namespace std;
typedef unsigned long long ull;
const long long N = 2e6 + 100;
long long n, a[N], L, R, X, q, s, t, chai[N], temp;
inline void cal(long long X)
{
long long c = abs(chai[X]);
if (chai[X] < 0)
{
temp = temp + t * c;
}
if (chai[X] > 0)
{
temp = temp - s * c;
}
}
inline void reply(long long X)
{
long long c = abs(chai[X]);
if (chai[X] < 0)
temp = temp - t * c;
if (chai[X] > 0)
temp = temp + s * c;
}
int main()
{
freopen("wind.out", "w", stdout);
ios::sync_with_stdio(0);
cin >> n >> q >> s >> t;
for (long long i = 0; i <= n; ++i)
cin >> a[i];
chai[0] = a[0];
for (long long i = 1; i <= n; ++i) {
chai[i] = a[i] - a[i - 1];
cal(i);
}
while (q--)
{
cin >> L >> R >> X;
reply(L);
chai[L] += X;
cal(L);
if (R < n)
{
reply(R + 1);
chai[R + 1] -= X;
cal(R + 1);
}
// for (long long i = 1; i <= n; ++i) cout << chai[i] << " ";
cout << temp << "\n";
}
}