제출 #497108

#제출 시각아이디문제언어결과실행 시간메모리
497108MohamedAhmed04Foehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
181 ms6776 KiB
#include <bits/stdc++.h> using namespace std ; const int MAX = 2e5 + 10 ; int arr[MAX] ; int n , q , s , t ; long long bit[MAX] ; void add(int i , int x) { ++i ; for(; i <= n+1 ; i += (i & (-i))) bit[i] += x ; } long long get(int i) { ++i ; long long sum = 0 ; for(; i > 0 ; i -= (i & (-i))) sum += bit[i] ; return sum ; } void update(int l , int r , int x) { add(l , x) , add(r+1 , -x) ; } long long ans = 0 ; void upd(int idx , int sgn) { if(idx == n) return ; long long x = get(idx) , y = get(idx+1) ; if(x < y) ans -= (y - x) * s * sgn ; else ans += (x - y) * t * sgn ; } int main() { ios_base::sync_with_stdio(0) ; cin.tie(0) ; cin>>n>>q>>s>>t ; for(int i = 0 ; i <= n ; ++i) cin>>arr[i] ; for(int i = 0 ; i <= n ; ++i) update(i , i , arr[i]) ; for(int i = 0 ; i < n ; ++i) upd(i , 1) ; while(q--) { int l , r , x ; cin>>l>>r>>x ; upd(l-1 , -1) , upd(r , -1) ; update(l , r , x) ; upd(l-1 , 1) , upd(r , 1) ; cout<<ans<<"\n" ; } return 0 ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...