Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
45115 | wangjiajian | 课堂检测 | C++ | 解答错误 | 60 | 32 MS | 1828 KB | 1026 | 2022-02-15 13:06:22 |
#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; }