Submission #1157643

#TimeUsernameProblemLanguageResultExecution timeMemory
1157643koukirocksFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
88 ms7236 KiB
#include<bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0) using namespace std; typedef long long ll; struct BIT { int n; vector<ll> a; BIT(int _n):n(_n) { a.resize(n+1); } void update(int x,ll v) { while (x<=n) { a[x]+=v; x+=(-x&x); } } ll query(int x) { ll ans=0; while (x) { ans+=a[x]; x-=(-x&x); } return ans; } }; int main() { speed; ll n,q,s,t; cin>>n>>q>>s>>t; vector<ll> a(n+1); ll ans=0; BIT b(n); cin>>a[0]; for (int i=1;i<=n;i++) { cin>>a[i]; b.update(i,a[i]-a[i-1]); ll d=a[i-1]-a[i]; ans+=(d>0?t:s)*d; } auto cal = [&](int i) { // cout<<i<<" cla\n"<<flush; ll d=b.query(i-1)-b.query(i); return (d>0?t:s)*d; }; // cout<<ans<<"\n"; while (q--) { ll l,r,v; cin>>l>>r>>v; // cout<<l<<" "<<r<<" "<<v<<" lrv\n"<<flush; ans-=cal(l); if (r!=n) ans-=cal(r+1); b.update(l,v); b.update(r+1,-v); ans+=cal(l); if (r!=n) ans+=cal(r+1); cout<<ans<<"\n"; // for (int i=1;i<=n;i++) cout<<b.query(i)<<" "; // cout<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...