Submit Time:2022-02-15 13:06:22

运行 ID: 45115

#include <bits/stdc++.h> #define lll long long #define N (int)(100010) using namespace std; int n, m, choice, l, r, x, block, num; lll data[N], idx[N], tag[N]; lll mn(lll a, int b) { if(a < b) return a; return b; } int main() { scanf("%d", &n); block = sqrt(n); for(register int i=1; i<=n; i++) { scanf("%d", data+i); idx[i] = (i-1)/block+1; } scanf("%d", &m); while(m--) { scanf("%d", &choice); if(choice == 1) { scanf("%d%d%d", &l, &r, &x); for(register int i=l; i<=mn(idx[l]*block, r); i++) data[i] += x; if(idx[l] != idx[r]) { for(register int i=block*(idx[r]-1)+1; i<=r; i++) data[i]+=x; } for(register int i=idx[l]+1; i<=idx[r]-1; i++) tag[i] += x; } else { scanf("%d", &x); printf("%lld\n", data[x]+tag[idx[x]]); } } return 0; }