Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- struct BIT {
- int n, m; vector<vector<int>> bit;
- BIT() { n = m = 0; }
- BIT(int n, int m): n(n), m(m), bit(n + 1, vector<int>(m + 1)) {}
- void update(int u, int v, int val) {
- for (int i = u; i <= n; i += i & -i)
- for (int j = v; j <= m; j += j & -j) {
- bit[i][j] += val;
- }
- }
- int get(int u, int v) {
- int val = 0;
- for (int i = u; i >= 1; i -= i & -i)
- for (int j = v; j >= 1; j -= j & -j) {
- val += bit[i][j];
- }
- return val;
- }
- };
- signed main() {
- cin.tie(0)->sync_with_stdio(0);
- BIT bit;
- for (int t; cin >> t; ) {
- if (t == 0) {
- int s; cin >> s;
- bit = BIT(s, s);
- }
- else if (t == 1) {
- int x, y, a;
- cin >> x >> y >> a;
- x++; y++;
- bit.update(x, y, a);
- }
- else if (t == 2) {
- int l, b, r, t;
- cin >> l >> b >> r >> t;
- l++; b++; r++; t++;
- cout << bit.get(r, t) - bit.get(l - 1, t) - bit.get(r, b - 1) + bit.get(l - 1, b - 1) << '\n';
- }
- else if (t == 3) return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement