namespace DEL
{
    template<int max>
    class FenwickTree
    {
    private:
        int n;
        int a[max][max];
    public:
        void init(int _n)
        {
            n = _n;
            for(int i = 1; i <= n; i++)
                for(int j = 1; j <= n; j++)
                    a[i][j] = 0;
        }
        void update(int x, int y, int v)
        {
            for(int i = x; i <= n; i += (i & -i))
                for(int j = y; j <= n; j += (j & -j))
                    a[i][j] += v;
        }
        int query(int x, int y)
        {
            int ans = 0;
            for(int i = x; i >= 1; i -= (i & -i))
                for(int j = y; j >= 1; j -= (j & -j))
                    ans += a[i][j];
            return ans;
        }
        int work(int l, int b, int r, int t)
        {
            return query(r, t) - query(l - 1, t) - query(r, b - 1) + query(l - 1, b - 1);
        }
    };
}
#include <cstdio>
using namespace std;
DEL::FenwickTree<1025> ft;
int main()
{
    int op;
    while(scanf("%d", &op))
    {
        if(op == 0)
        {
            int n;
            scanf("%d", &n);
            ft.init(n);
        }
        else if(op == 1)
        {
            int x, y, a;
            scanf("%d%d%d", &x, &y, &a);
            x++, y++;
            ft.update(x, y, a);
        }
        else if(op == 2)
        {
            int l, b, r, t;
            scanf("%d%d%d%d", &l, &b, &r, &t);
            l++, b++, r++, t++;
            printf("%d\n", ft.work(l, b, r, t));
        }
    }
    return 0;
}

标签: none

添加新评论