1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; int lazy[maxn<<2], a[maxn], n, q; #define lson l, mid, rt<<1 #define rson mid+1, r, rt<<1|1 void push_down(int rt) { if (lazy[rt]) { lazy[rt<<1] += lazy[rt]; lazy[rt<<1|1] += lazy[rt]; lazy[rt] = 0; } } void update(int L, int R, int x, int l, int r, int rt) { if (L <= l && r <= R) { lazy[rt] += x; return; } push_down(rt); int mid = (l + r) / 2; if (L <= mid) update(L, R, x, lson); if (R > mid) update(L, R, x, rson); } int query(int p, int l, int r, int rt) { if (l == r) return lazy[rt] + a[p]; push_down(rt); int mid = (l + r) / 2; return (p <= mid) ? query(p, lson) : query(p, rson); } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", a+i); scanf("%d", &q); while (q--) { int op; scanf("%d", &op); if (op == 1) { int l, r, x; scanf("%d%d%d", &l, &r, &x); update(l, r, x, 1, n, 1); } else { int p; scanf("%d", &p); printf("%d\n", query(p, 1, n, 1)); } } return 0; }
- 1
信息
- ID
- 27
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 2
- 上传者