有没有三维时装数组的模板啊

求求各位行行好,给个三维树状数组的模板,过个题

#include <iostream>
#include <cstring>
using namespace std;

#define MAXN 110

int c[MAXN][MAXN][MAXN];
int n;

int lowbit(int x) {
    return x & -x;
}

void add(int x, int y, int z, int v) {
    v &= 1;
    if (v < 0) {
        v = -v;
    }

    int i, j, k;
    for (i = x; i <= n; i += lowbit(i)) {
        for (j = y; j <= n; j += lowbit(j)) {
            for (k = z; k <= n; k += lowbit(k)) {
                c[i][j][k] ^= v;
            }
        }
    }
}

int sum(int x, int y, int z) {
    int i, j, k;
    int s = 0;
    for (i = x; i; i -= lowbit(i)) {
        for (j = y; j; j -= lowbit(j)) {
            for (k = z; k; k -= lowbit(k)) {
                s ^= c[i][j][k];
            }
        }
    }
    return s;
}

int main() {
    int m;
    while (scanf("%d %d", &n, &m) != EOF) {
        memset(c, 0, sizeof(c));
        while (m--) {
            int tp;
            scanf("%d", &tp);
            if (!tp) {
                int x, y, z;
                scanf("%d %d %d", &x, &y, &z);
                printf("%d\n", sum(x, y, z));
            }
            else {
                int x1, y1, z1, x2, y2, z2;
                scanf("%d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2);
                add(x1, y1, z1, 1);
                add(x2 + 1, y1, z1, -1);
                add(x1, y2 + 1, z1, -1);
                add(x1, y1, z2 + 1, -1);
                add(x2 + 1, y2 + 1, z1, 1);
                add(x1, y2 + 1, z2 + 1, 1);
                add(x2 + 1, y1, z2 + 1, 1);
                add(x2 + 1, y2 + 1, z2 + 1, -1);
            }
        }
    }
    return 0;
}