Submission 117
Return to ProblemUser: admin
Language: cpp
Submitted at: Nov. 8, 2025, 1:53 p.m.
Elapsed Time: 284.94 s
Keys per Minute (KPM): Unknown
Status: AC
Test Case Results:
| # | Status | Time (s) | Error |
|---|---|---|---|
| 1 | AC | 0.915 | - |
| 2 | AC | 0.913 | - |
| 3 | AC | 0.937 | - |
| 4 | AC | 0.925 | - |
| 5 | AC | 0.926 | - |
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[100005],sum[400005],tag[400005];
void pushup(int p){sum[p]=sum[p*2]+sum[p*2+1];}
void maketag(int l,int r,int p,int num){
tag[p]+=num;
sum[p]+=num*(r-l+1);
}
void pushdown(int l,int r,int p){
int mid=(l+r)/2;
maketag(l,mid,p*2,tag[p]);
maketag(1+mid,r,p*2+1,tag[p]);
tag[p]=0;
}
void build(int l,int r,int p=1){
if (l==r) {
sum[p]=a[l];
return;
}
int mid=(l+r)/2;
build(l,mid,p*2);
build(1+mid,r,p*2+1);
pushup(p);
}
void add(int L,int R,int num,int l,int r,int p=1){
if (l>R||L>r) return;
if (L<=l&&r<=R) maketag(l,r,p,num);
else{
int mid=(l+r)/2;
pushdown(l,r,p);
add(L,R,num,l,mid,p*2);
add(L,R,num,mid+1,r,p*2+1);
pushup(p);
}
}
int query(int L,int R,int l,int r,int p=1){
if (l>R||L>r) return 0;
if (L<=l&&r<=R) return sum[p];
else{
int mid=(l+r)/2;
pushdown(l,r,p);
return query(L,R,l,mid,p*2)+query(L,R,mid+1,r,p*2+1);
// add(L,R,num,l,mid,p*2);
// add(L,R,num,mid+1,r,p*2+1);
// pushup(p);
}
}
signed main(){
int n,q;
cin>>n>>q;
for (int i=1;i<=n;i++) cin>>a[i];
build(1,n);
while (q--){
int op,x,y,k;
cin>>op>>x>>y;
if (op==1){
cin>>k;
add(x,y,k,1,n);
}
else cout<<query(x,y,1,n)<<endl;
}
}