记录编号 |
589413 |
评测结果 |
AAAAAAAAAA |
题目名称 |
焚风现象 |
最终得分 |
100 |
用户昵称 |
dream |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
3.303 s |
提交时间 |
2024-07-05 14:25:03 |
内存使用 |
7.15 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005;
ll n,q,s,t;
ll a[N];
ll b[N];
ll res=0;
void gl(int x){
if(x>n){
return;
}
int v=a[x];
int last=res;
if(v>0){
res+=v*s;
}
if(v<0){
res-=-v*t;
}
}
void xg(int x){
if(x>n){
return;
}
int last=res;
int v=a[x];
if(v>0){
res-=v*s;
}
if(v<0){
res+=-v*t;
}
}
int main(){
freopen("foehn.in","r",stdin);
freopen("foehn.out","w",stdout);
ios::sync_with_stdio(0);
cin>>n>>q>>s>>t;
b[0]=0;
for(int i=0;i<=n;i++){
cin>>b[i];
a[i]=b[i]-b[i-1];
}
for(int i=0;i<=n;i++){
if(a[i]>0){
res+=a[i]*-s;
}
if(a[i]<0){
res+=-a[i]*t;
}
}
while(q--){
ll l,r,x;
cin>>l>>r>>x;
gl(l);
gl(r+1);
a[l]+=x;
a[r+1]-=x;
xg(l);
xg(r+1);
cout<<res<<"\n";
}
return 0;
}