Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
44557 | seanlsy | 课堂检测 | C++ | 通过 | 100 | 67 MS | 1836 KB | 681 | 2022-02-09 10:14:45 |
#include <bits/stdc++.h> using namespace std; #define int long long int n,m,opt,l,r,x,block,bl[500005],a[500005],sum[500005]; void Add(int l,int r,int x){ for(int i=l;i<=min(r,block*bl[l]);i++) a[i]+=x; if(bl[l]<bl[r]) for(int i=block*bl[r]-block+1;i<=r;i++) a[i]+=x; for(int i=bl[l]+1;i<bl[r];i++) sum[i]+=x; } signed main(){ scanf("%lld",&n); block=sqrt(n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),bl[i]=(i-1)/block+1; scanf("%lld",&m); while(m--){ scanf("%lld",&opt); if(opt==1){ scanf("%lld%lld%lld",&l,&r,&x); Add(l,r,x); } else{ scanf("%lld",&x); printf("%lld\n",a[x]+sum[bl[x]]); } } return 0; }