//一维
#define lowbit(x) (x&(-x))

int n, t[MAXN];

void change(int x,int p)
{
    while(x<=n)
    {
        t[x]+=p;
        x+=lowbit(x);
    }
    return;
}
int sum(int k)
{
    int result=0;
    while(k>0)
    {
        result+=t[k];
        k-=lowbit(k);
    }
    return result;
}

//二维
#define lowbit(x) (x&(-x))

int n, m, t[MAXN][MAXN];

int sum(int i, int j){
    int result = 0;
    for(int x = i; x > 0; x -= lowbit(x)) {
        for(int y = j; y > 0; y -= lowbit(y)) {
            result += t[x][y];
        }
    }
    return result;
}
void change(int i, int j, int p) {
    for (int x = i; x <= n; x += lowbit(x)) {
        for (int y = j; y <= m; y += lowbit(y)) {
            t[x][y] += p;
        }
    }
}

results matching ""

    No results matching ""