제출 #209145

#제출 시각아이디문제언어결과실행 시간메모리
209145kai824Foehn Phenomena (JOI17_foehn_phenomena)C++17
100 / 100
196 ms7348 KiB
#include "bits/stdc++.h" using namespace std; typedef pair<int,int> pii; #define eb emplace_back #define int int64_t int arr[200005],ft2[200005],cost[200005],n; inline int ls(int x){return x&(-x);} void update2(int p,int v){ for(p++;p<=n+3;p+=ls(p))ft2[p]+=v; } int query2(int p){ int ans=0; for(p++;p;p-=ls(p))ans+=ft2[p]; return ans; } int32_t main() { ios_base::sync_with_stdio(false);cin.tie(0); int q,s,t,c,l,r,u,sum=0; cin>>n>>q>>s>>t; for(int x=0;x<=n;x++)cin>>arr[x]; for(int x=1;x<=n;x++){ if(arr[x-1]<=arr[x])c=(arr[x]-arr[x-1])*(-s); else c=(arr[x-1]-arr[x])*t; sum+=c; update2(x,arr[x]); update2(x+1,-arr[x]); } while(q--){ cin>>l>>r>>u; if(l>0){ c=query2(l)-query2(l-1); if(c>=0)sum-=(-s)*(c); else sum-=t*abs(c); } if(r<n){ c=query2(r+1)-query2(r); if(c>=0)sum-=(-s)*(c); else sum-=t*abs(c); } update2(l,u);update2(++r,-u); if(l>0){ c=query2(l)-query2(l-1); if(c>=0)sum+=(-s)*(c); else sum+=t*abs(c); } if(r<=n){ c=query2(r)-query2(r-1); if(c>=0)sum+=(-s)*(c); else sum+=t*abs(c); } cout<<sum<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...