Submission #1263656

#TimeUsernameProblemLanguageResultExecution timeMemory
1263656nguyenhuythachFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
76 ms8772 KiB
#include<bits/stdc++.h> #include<algorithm> #include<random> #include<chrono> #include<cstdlib> #include<ctime> #include<numeric> #include<vector> #include<stack> #include<map> #include<set> #include<queue> #include<iomanip> #define int long long #define ll long long #define L LLONG_MAX #define fi first #define se second #define pii pair<int,int> #define sz(a) ((int)a.size()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define REP(i,k,j) for(int i=k;i>=j;i--) #define FORD(i,a) for(auto i:a) #define rngdcl mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()) #define random(l,r) ((l)+(rng()%(r-l+1))) using namespace std; const int nmax=2e5+1; int n,q,s,t; int a[nmax],tree[nmax],dif[nmax]; void update(int x,int val) { while(x<=n+1) { tree[x]+=val; x+=(x&-x); } } int get(int x) { int ans=0; while(x>0) { ans+=tree[x]; x-=(x&-x); } return ans; } void input() { cin >> n >> q >> s >> t; FOR(i,0,n) cin >> a[i]; } void solve() { FOR(i,1,n) dif[i]=a[i]-a[i-1]; FOR(i,1,n) update(i,dif[i]); int ans=0; FOR(i,0,n-1) { if(a[i]<a[i+1]) ans-=s*(a[i+1]-a[i]); else ans+=t*(a[i]-a[i+1]); } while(q--) { int l,r,x; cin >> l >> r >> x; int cs=r; int prel=get(l),prer=get(r); update(r+1,-x); update(l,x); int savel=get(l-1),saver=get(r+1); l=get(l); r=get(r); if(savel<prel) ans+=s*(prel-savel); else ans-=t*(savel-prel); if(savel<l) ans-=s*(l-savel); else ans+=t*(savel-l); if(cs!=n) { if(r<saver) ans-=s*(saver-r); else ans+=t*(r-saver); if(prer<saver) ans+=s*(saver-prer); else ans-=t*(prer-saver); } cout << ans << '\n'; } } signed main() { //freopen(".inp", "r", stdin); //freopen(".out", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); input(); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...