先水一个可以AC的代码







































int Color[8000];
int NumColor[8000];
struct TNode{
int left, right;
int col;
TNode *LeftChild, *RightChild;
TNode(){};
void TNODE(int ,int );
void Insert(int ,int ,int );
void Count();
};
void TNode::TNODE(int left, int right)
{
this->left=left; this->right=right;
if(right-left==1)
{
LeftChild=NULL;
RightChild=NULL;
}
else
{
int mid=(left+right)/2;
TNode Tl;
TNode Tr;
LeftChild=&Tl;
RightChild=&Tr;
LeftChild->TNODE(left,mid);
RightChild->TNODE(mid,right);
}
}
void TNode::Insert(int left,int right,int color)
{
if (this->col==color)
{}
else
{
if( left == this->left && right == this->right )
this->col = color;
else
{
int mid=(this->left+this->right)/2;
if(this->col!=-2)
{
LeftChild->col=color;
RightChild->col=color;
}
this->col=-2;
if(left<=mid)
{
LeftChild->Insert(left,right,color);
}
if(right>=mid)
{
RightChild->Insert(left,right,color);
}
LeftChild->Insert(left,mid,color);
RightChild->Insert(mid,right,color);
}
}
}
void TNode::Count()
{
if(col!=-2 && col!=-1 )
{
int i;
for (i=left;i<right;i ++)
Color[i]=col;
}
if(col==-2)
{
LeftChild->Count();
RightChild->Count();
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
int left, right, color;
TNode T;
T.TNODE(0,8000);
memset(Color,0,sizeof(Color));
memset(NumColor,0,sizeof(NumColor));
for(i = 0; i < n; i++)
{
scanf("%d%d%d", &left, &right, &color);
T.Insert(left,right,color);
}
int hold=-1;
for(i=0;i<8000;i++)
{
if(Color[i]!=hold || hold==-1)
{
NumColor[hold]++;
hold=Color[i];
}
}
for(i=0;i<8000;i++)
{
if(NumColor[i]!=0)
printf("%d %d\n",i,NumColor[i]);
}
}
return 0;
}
int NumColor[8000];
struct TNode{
int left, right;
int col;
TNode *LeftChild, *RightChild;
TNode(){};
void TNODE(int ,int );
void Insert(int ,int ,int );
void Count();
};
void TNode::TNODE(int left, int right)
{
this->left=left; this->right=right;
if(right-left==1)
{
LeftChild=NULL;
RightChild=NULL;
}
else
{
int mid=(left+right)/2;
TNode Tl;
TNode Tr;
LeftChild=&Tl;
RightChild=&Tr;
LeftChild->TNODE(left,mid);
RightChild->TNODE(mid,right);
}
}
void TNode::Insert(int left,int right,int color)
{
if (this->col==color)
{}
else
{
if( left == this->left && right == this->right )
this->col = color;
else
{
int mid=(this->left+this->right)/2;
if(this->col!=-2)
{
LeftChild->col=color;
RightChild->col=color;
}
this->col=-2;
if(left<=mid)
{
LeftChild->Insert(left,right,color);
}
if(right>=mid)
{
RightChild->Insert(left,right,color);
}
LeftChild->Insert(left,mid,color);
RightChild->Insert(mid,right,color);
}
}
}
void TNode::Count()
{
if(col!=-2 && col!=-1 )
{
int i;
for (i=left;i<right;i ++)
Color[i]=col;
}
if(col==-2)
{
LeftChild->Count();
RightChild->Count();
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
int left, right, color;
TNode T;
T.TNODE(0,8000);
memset(Color,0,sizeof(Color));
memset(NumColor,0,sizeof(NumColor));
for(i = 0; i < n; i++)
{
scanf("%d%d%d", &left, &right, &color);
T.Insert(left,right,color);
}
int hold=-1;
for(i=0;i<8000;i++)
{
if(Color[i]!=hold || hold==-1)
{
NumColor[hold]++;
hold=Color[i];
}
}
for(i=0;i<8000;i++)
{
if(NumColor[i]!=0)
printf("%d %d\n",i,NumColor[i]);
}
}
return 0;
}