#include <bits/stdc++.h>
#define int long long
using namespace std;
pair<int,int> z[1000000];
int x[1000000];
int sum=0;
int flip[2];
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int a,b,c,d;
cin >> a >> b >> c >> d;
cin >> x[0];
c=-c;
flip[1]=c;
flip[0]=d;
for (int i=1;i<=a;i++){
cin >> x[i];
if (x[i]>x[i-1]){
z[i]={abs(x[i]-x[i-1]),1};
sum+=c*abs(x[i]-x[i-1]);
}else{
z[i]={abs(x[i]-x[i-1]),0};
sum+=d*abs(x[i]-x[i-1]);
}
}
// cout << sum << " ";
for (int i=1;i<=b;i++){
int x,y,t;
cin >> x >> y >> t;
int del=0;
del+= flip[z[x].second]*z[x].first;
if (y!=a){
del+= flip[z[y+1].second]*z[y+1].first;
}
// cout << flip[z[x].second]*z[x].first << " " << flip[z[y+1].second]*z[y+1].first << "\n";
// cout << "\n";
sum-=del;
int flip1,flip2;
if (z[x].second==1){
flip1=1;
}else{
flip1=-1;
}
if (z[x].first +flip1*t <0){
z[x].first = abs(z[x].first +flip1*t);
z[x].second = 1-z[x].second;
}else{
z[x].first +=flip1*t;
}
sum+= flip[z[x].second]*z[x].first;
if (y!=a){
if (z[y+1].second==1){
flip2=-1;
}else{
flip2=1;
}
if (z[y+1].first+flip2*t<0){
z[y+1].first = abs(z[y+1].first +flip2*t);
z[y+1].second = 1-z[y+1].second;
}else{
z[y+1].first = z[y+1].first +flip2*t;
}
sum+= flip[z[y+1].second]*z[y+1].first;
}
cout << sum << "\n";
// for (int j=1;j<=a;j++){
// cout << z[j].first << " " << z[j].second << "\n";
// }
// cout << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |