#include//grh 线段树 05/12/10 20:13
using namespace std;
int color[31];
int L,T,O;
struct LineTree{
int l,r;
int col;
bool co;
}node[400001];
void SetUp_LineTree(int a,int b,int v)
{
node[v].l=a;
node[v].r=b;
node[v].col=1;
node[v].co=1;
if(a==b)return;
int mid=(a+b)/2,n=2*v;
SetUp_LineTree(a,mid,n);
SetUp_LineTree(mid+1,b,n+1);
return;
}
/*初始化颜色数组,方便染色时使用位运算*/
void InitColor(void)
{
int i;
for(i=2,color[1]=1;i0){
sum+=c&1;
c>>=1;
}
return sum;
}
int query(int a,int b,int v)
{
if(node[v].co||(a==node[v].l && b==node[v].r))return node[v].col;
int c=0,mid=(node[v].l+node[v].r)/2,n=2*v;
if(a>run;
if(run=='C'){
scanf("%d %d %d",&a,&b,&c);
if(a>b){
int q=a;
a=b;
b=q;
}
staining(a,b,1,c);
}
else{
scanf("%d %d",&a,&b);
if(a>b){
int q=a;
a=b;
b=q;
}
printf("%d\n",find(query(a,b,1)));
}
}
return;
}
int main(void)
{
work();
return 0;
}
|