Advertisement
tuki2501

ioi01p1.cpp

Jan 8th, 2022 (edited)
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long ll;
  5.  
  6. struct BIT {
  7.   int n, m; vector<vector<int>> bit;
  8.   BIT() { n = m = 0; }
  9.   BIT(int n, int m): n(n), m(m), bit(n + 1, vector<int>(m + 1)) {}
  10.   void update(int u, int v, int val) {
  11.     for (int i = u; i <= n; i += i & -i)
  12.     for (int j = v; j <= m; j += j & -j) {
  13.       bit[i][j] += val;
  14.     }
  15.   }
  16.   int get(int u, int v) {
  17.     int val = 0;
  18.     for (int i = u; i >= 1; i -= i & -i)
  19.     for (int j = v; j >= 1; j -= j & -j) {
  20.       val += bit[i][j];
  21.     }
  22.     return val;
  23.   }
  24. };
  25.  
  26. signed main() {
  27.   cin.tie(0)->sync_with_stdio(0);
  28.   BIT bit;
  29.   for (int t; cin >> t; ) {
  30.     if (t == 0) {
  31.       int s; cin >> s;
  32.       bit = BIT(s, s);
  33.     }
  34.     else if (t == 1) {
  35.       int x, y, a;
  36.       cin >> x >> y >> a;
  37.       x++; y++;
  38.       bit.update(x, y, a);
  39.     }
  40.     else if (t == 2) {
  41.       int l, b, r, t;
  42.       cin >> l >> b >> r >> t;
  43.       l++; b++; r++; t++;
  44.       cout << bit.get(r, t) - bit.get(l - 1, t) - bit.get(r, b - 1) + bit.get(l - 1, b - 1) << '\n';
  45.     }
  46.     else if (t == 3) return 0;
  47.   }
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement