This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll koliko[200005],povecaj,res=0,T,S,N,Q,u1,u2;
int main(){
cin>>N>>Q>>S>>T;
N++;
for(int i=1;i<=N;i++)
cin>>koliko[i];
for(int i=1;i<N;i++)
if(koliko[i]<koliko[i+1])
res-=S*abs(koliko[i]-koliko[i+1]);
else res+=T*abs(koliko[i]-koliko[i+1]);
// cout<<res<<endl;
while(Q--){
cin>>u1>>u2>>povecaj;
u1++;
u2++;
if(koliko[u1-1]<koliko[u1] and u1!=1)
res+=S*abs(koliko[u1-1]-koliko[u1]);
if(koliko[u1-1]>=koliko[u1] and u1!=1)
res-=T*abs(koliko[u1-1]-koliko[u1]);
if(koliko[u2+1]<koliko[u2] and u2!=N)
res+=S*abs(koliko[u2+1]-koliko[u2]);
if(koliko[u2+1]>=koliko[u2] and u2!=N)
res-=T*abs(koliko[u2+1]-koliko[u2]);
for(int i=u1;i<=u2;i++)
koliko[i]+=povecaj;
if(koliko[u1-1]<koliko[u1] and u1!=1)
res-=S*abs(koliko[u1-1]-koliko[u1]);
if(koliko[u1-1]>=koliko[u1] and u1!=1)
res+=T*abs(koliko[u1-1]-koliko[u1]);
if(koliko[u2+1]<koliko[u2] and u2!=N)
res-=S*abs(koliko[u2+1]-koliko[u2]);
if(koliko[u2+1]>=koliko[u2] and u2!=N)
res+=T*abs(koliko[u2+1]-koliko[u2]);
/* for(int i=1;i<=N;i++)
cout<<koliko[i]<<" ";
cout<<endl;*/
res=0;
for(int i=1;i<N;i++)
if(koliko[i]<koliko[i+1])
res-=S*abs(koliko[i]-koliko[i+1]);
else res+=T*abs(koliko[i]-koliko[i+1]);
cout<<res<<endl;
}
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... |