#include <iostream>
#include<cstdio>
#include <cstring>
#include <string>
using namespace std;
const int N=200;
int C[N][N][N];
int n,m;
int lowbit(int a)
{
return a&(-a);
}
void Modify(int x,int y,int z,int c)
{
int tmpy,tmpz;
for(int i=x;i<=n;i+=lowbit(i))
for(int j=y;j<=n;j+=lowbit(j))
for(int k=z;k<=n;k+=lowbit(k))
C[i][j][k]+=c;
}
int getsum(int x,int y,int z)
{
int ans=0;
for(int i=x;i>0;i-=lowbit(i))
for(int j=y;j>0;j-=lowbit(j))
for(int k=z;k>0;k-=lowbit(k))
ans+=C[i][j][k];
return ans;
}
int in()
{
char ch;
int a = 0;
while((ch = getchar()) == ' ' || ch == '\n');
a += ch - '0';
while((ch = getchar()) != ' ' && ch != '\n')
{
a *= 10;
a += ch - '0';
}
return a;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(C,0,sizeof(C));
int op;
int x1,y1,z1,x2,y2,z2;
while(m--)
{
op=in();
if(op)
{
x1=in();y1=in();z1=in();x2=in();y2=in();z2=in();
Modify(x1,y1,z1,1);
Modify(x1,y1,z2+1,1);
Modify(x1,y2+1,z1,1);
Modify(x1,y2+1,z2+1,1);
Modify(x2+1,y1,z1,1);
Modify(x2+1,y1,z2+1,1);
Modify(x2+1,y2+1,z1,1);
Modify(x2+1,y2+1,z2+1,1);
}
else
{
x1=in();y1=in();z1=in();
printf("%d\n",getsum(x1,y1,z1)%2);
}
}
}
return 0;
}
hdu 3584 (三维树状数组模板 )
最新推荐文章于 2022-06-24 12:37:59 发布