Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define F first
- #define S second
- using ll = long long;
- using pii = pair <int, int>;
- const int oo = INT_MAX;
- const int SZ = 2e5 + 4;
- struct node {
- ll val, add;
- node() : val(0), add(0) {}
- node(ll v) : val(v), add(0) {}
- };
- int n, m, K;
- vector <node> st;
- void read() {
- cin >> n >> m;
- K = 1; while (K < n) K *= 2;
- st.resize(2 * K, node());
- }
- ll req(int l, int r, int ll = 0, int rr = K - 1, int v = 1) {
- if (r < ll || rr < l) return 0;
- if (l <= ll && rr <= r) return st[v].val + st[v].add;
- int m = (ll + rr) / 2;
- return req(l, r, ll, m, 2 * v) + req(l, r, m + 1, rr, 2 * v + 1);
- }
- ll req1(int t, int ll = 0, int rr = K - 1, int v = 1) {
- if (ll == rr) return st[v].val + st[v].add;
- int m = (ll + rr) / 2;
- if (t <= m) return req1(t, ll, m, 2 * v) + st[v].add;
- else return req1(t, m + 1, rr, 2 * v + 1) + st[v].add;
- }
- void upd(int val, int l, int r, int ll = 0, int rr = K - 1, int v = 1) {
- if (r < ll || rr < l) return;
- if (l <= ll && rr <= r) {
- st[v].add += val;
- return;
- }
- int m = (ll + rr) / 2;
- upd(val, l, r, ll, m, 2 * v);
- upd(val, l, r, m + 1, rr, 2 * v + 1);
- }
- void solve() {
- while (m--) {
- int op, l, r, x;
- cin >> op >> l;
- if (op == 1) {
- cin >> r >> x;
- upd(x, l, r);
- } else cout << req1(l) << endl;
- }
- }
- signed main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- read();
- solve();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement