Submission #1235739

#TimeUsernameProblemLanguageResultExecution timeMemory
1235739nasjesFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
303 ms7364 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef long double ld; const ll dim = 5*1e6+7; //const ll mod = 1e9 + 7; const ll inf = 1e18 + 77; #define endl "\n" #define fi first #define pb push_back #define se second #define vll vector<ll> ll n, m; ll a[dim], dif[dim]; int main() { ll d, k, q, s, t; cin>>n>>q>>s>>t; for(int i=0; i<=n; i++){ cin>>a[i]; if(i>=1)dif[i]=a[i]-a[i-1]; } ll ans=0; for(int i=1; i<=n; i++){ if(dif[i]>0)ans-=s*abs(dif[i]); else ans+=t*abs(dif[i]); } // cout<<ans<<endl; while(q--){ ll l, r, x; cin>>l>>r>>x; if(dif[l]>0)ans+=abs(dif[l])*s; else ans-=abs(dif[l])*t; if(dif[r+1]>0 && r+1<=n)ans+=abs(dif[r+1])*s; else if(r+1<=n)ans-=abs(dif[r+1])*t; dif[l]+=x; dif[r+1]-=x; if(dif[l]>0)ans-=abs(dif[l])*s; else ans+=abs(dif[l])*t; if(dif[r+1]>0 && r+1<=n)ans-=abs(dif[r+1])*s; else if(r+1<=n)ans+=abs(dif[r+1])*t; cout<<ans<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...