提交时间:2022-02-09 10:21:19
运行 ID: 44558
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a[100001],bl[100001],lazy[100001]; int n,m,block; int Add(ll l,ll r,ll val) { if(l>r) swap(l,r); for(int i=l; i<=min(r,bl[l]*block); i++) a[i]+=val; if(bl[l]!=bl[r]) for(int i=block*bl[r]; i<=r; i++) a[i]+=val; for(int i=bl[l]+1; i<=bl[r]-1; i++) lazy[i]+=val; } int main() { cin>>n; block=sqrt(n); for(int i=1; i<=n; i++) { cin>>a[i]; bl[i]=(i-1)/block+1; } cin>>m; for(int i=1,opt,l,r,k; i<=m; i++) { cin>>opt; if(opt==1) { cin>>l>>r>>k; Add(l,r,k); } if(opt==2) { cin>>k; cout<<a[k]+lazy[k]<<'\n'; } } return 0; }