Submission #1313319

#TimeUsernameProblemLanguageResultExecution timeMemory
1313319yus1f_mFoehn Phenomena (JOI17_foehn_phenomena)C++20
10 / 100
122 ms13628 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> #define ll long long #define str string #define pb push_back #define pf push_front #define in insert #define all(v) v.begin(),v.end() const int sz=1000000,INF=1000000000; using namespace std; vector<ll>nums,diffs,sums; void build(ll left,ll right,ll index) { if(left==right) { sums[index]=diffs[left]; } else { ll middle=(left+right)/2; build(left,middle,2*index); build(middle+1,right,2*index+1); sums[index]=sums[2*index]+sums[2*index+1]; } } ll getSum(ll left,ll right,ll index,ll Left,ll Right) { if(left>Right || right<Left) { return 0; } else if(left>=Left && right<=Right) { return sums[index]; } else { ll middle=(left+right)/2; return getSum(left,middle,2*index,Left,Right)+getSum(middle+1,right,2*index+1,Left,Right); } } void update(ll left,ll right,ll index,ll Index,ll Num) { if(left==right) { sums[index]+=Num; } else { ll middle=(left+right)/2; if(middle>=Index) { update(left,middle,2*index,Index,Num); } else { update(middle+1,right,2*index+1,Index,Num); } sums[index]=sums[2*index]+sums[2*index+1]; } } void solve() { ll n,m,l,p,num,num1,num2,num3,ans; cin>>n>>m>>l>>p; diffs.resize(n+1),sums.resize(4*n+1); for(int i=0;i<n+1;i++) { cin>>num; nums.pb(num); } for(int i=0;i<nums.size()-1;i++) { diffs[i+1]=nums[i]-nums[i+1]; } build(1,n,1); for(int i=0;i<m;i++) { cin>>num1>>num2>>num3; update(1,n,1,num1,-1*num3); if(num2<=n-1) { update(1,n,1,num2+1,num3); } ans=l*getSum(1,n,1,1,n); cout<<ans<<"\n"; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr),cout.tie(nullptr); ll t=1; //cin>>t; while(t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...