이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
void solve(){
long long n, q, s, t, suhu;
cin >> n >> q >> s >> t;
long long diff[n];
long long a, b;
cin >> a;
suhu=0;
for(int i=0;i<n;i++){
cin >> b;
diff[i]=a-b;
if(diff[i]<0){
suhu+=diff[i]*s;
}else{
suhu+=diff[i]*t;
}
a=b;
}
for(int i=0; i<q; i++){
long long l, r, x;
cin >> l >> r >> x;
if(diff[l-1]-x>=0 && diff[l-1]<=0){
suhu-=diff[l-1]*s;
suhu+=(diff[l-1]-x)*t;
diff[l-1]-=x;
}else if(diff[l-1]-x<=0 && diff[l-1]<=0){
suhu-=x*s;
diff[l-1]-=x;
}else if(diff[l-1]-x<=0 && diff[l-1]>=0){
suhu-=diff[l-1]*t;
suhu+=(diff[l-1]-x)*s;
diff[l-1]-=x;
}else if(diff[l-1]-x>=0 && diff[l-1]>=0){
suhu-=x*t;
diff[l-1]-=x;
}
if(r<n){
if(diff[r]+x>=0 && diff[r]<=0){
suhu-=diff[r]*s;
suhu+=(diff[r]+x)*t;
diff[r]+=x;
}else if(diff[r]+x<=0 && diff[r]<=0){
suhu+=x*s;
diff[r]+=x;
}else if(diff[r]+x<=0 && diff[r]>=0){
suhu-=diff[r]*t;
suhu+=(diff[r]+x)*s;
diff[r]+=x;
}else if(diff[r]+x>=0 && diff[r]>=0){
suhu+=x*t;
diff[r]+=x;
}
}
cout << suhu << endl;
}
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
solve();
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... |