Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
44484 | seanlsy | 课堂检测 | C++ | 解答错误 | 0 | 0 MS | 268 KB | 622 | 2022-02-09 08:05:13 |
#include <bits/stdc++.h> using namespace std; 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; } int main(){ scanf("%d%d",&n,&m); block=sqrt(n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),bl[i]=(i-1)/block+1; while(m--){ scanf("%d",&opt); if(opt==1){ scanf("%d%d%d",&l,&r,&x); Add(l,r,x); } else{ scanf("%d",&x); printf("%d\n",a[x]+sum[bl[x]]); } } return 0; }