Submission #1212152

#TimeUsernameProblemLanguageResultExecution timeMemory
1212152biankFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
90 ms5704 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; const int N=2e5+9; ll ft[N]; void upd(int p, ll v){ for(++p;p<N;p+=p&-p) ft[p]+=v; } void upd(int l, int r, ll v){ upd(l,v); upd(r+1,-v); } ll query(int p){ ll s=0; for(++p;p>0;p-=p&-p) s+=ft[p]; return s; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,q; ll s,t; cin>>n>>q>>s>>t; forn(i,n+1){ int a; cin>>a; upd(i,i,a); } ll ret=0LL; auto delta=[&](int i){ if(i==n) return 0LL; ll a=query(i); ll b=query(i+1); if(a<b) return s*(a-b); return t*(a-b); }; forn(i,n) ret+=delta(i); forn(i,q){ int l,r,x; cin>>l>>r>>x; ret-=delta(l-1); ret-=delta(r); upd(l,r,x); ret+=delta(l-1); ret+=delta(r); cout<<ret<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...