/*
zoj1610
这题是离散化,区间特殊查询的,和之前的第4 题是异曲同工的
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Node
{
int l,r,value;
}tr[]={};
int col[]={};
int c[]={};
int discrete[]={};
void build(int rt,int l,int r)
{
tr[rt].l=l;
tr[rt].r=r;
tr[rt].value=-;
if(l==r)
return ;
int mid=(l+r)/;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
}
void Pushdown(int rt)
{
tr[rt<<].value=tr[rt<<|].value=tr[rt].value;
tr[rt].value=-;
}
void Update(int rt,int l,int r,int x)
{
if(tr[rt].value==x)
return ;
if(tr[rt].l>=l&&tr[rt].r<=r)
{
tr[rt].value=x;
return ;
}
if(tr[rt].value!=-)
Pushdown(rt);
if(l<=tr[rt<<].r)
{
if(r<=tr[rt<<].r)
Update(rt<<,l,r,x);
else
Update(rt<<,l,tr[rt<<].r,x);
}
if(r>=tr[rt<<|].l)
{
if(l>=tr[rt<<|].l)
Update(rt<<|,l,r,x);
else
Update(rt<<|,tr[rt<<|].l,r,x);
}
if(tr[rt<<].value==tr[rt<<|].value&&tr[rt<<].value!=-)
tr[rt].value=tr[rt<<].value;
}
int erfen(int l,int r,int x)
{
while(l<=r)
{
int mid=(l+r)/;
if(x<discrete[mid])
r=mid-;
else
l=mid+;
}
return r;
}
void Query(int rt)
{
if(tr[rt].value!=-)
{
for(int i=tr[rt].l;i<=tr[rt].r;i++)
col[i]=tr[rt].value;
return ;
}
if(tr[rt].l==tr[rt].r)
return ;
Query(rt<<);
Query(rt<<|);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
int a[][]={};
int t=;
memset(col,-,sizeof(col));
memset(c,,sizeof(c));
memset(tr,,sizeof(tr));
memset(discrete,,sizeof(discrete));
for(int i=;i<n;i++)
{
scanf("%d%d%d",&a[i][],&a[i][],&a[i][]);
discrete[t++]=a[i][];
discrete[t++]=a[i][];
}
sort(discrete,discrete+t);
int z=;
for(int i=;i<t;i++)
{
if(discrete[i]!=discrete[i-])
discrete[z++]=discrete[i];
}
for(int i=z-;i>;i--)
{
if(discrete[i]-discrete[i-]>)
discrete[z++]=discrete[i-]+;
}
sort(discrete,discrete+z);
for(int i=z;i>;i--)
{
discrete[i]=discrete[i-];
}
build(,,z+);
for(int i=;i<n;i++)
{
int ll=erfen(,z,a[i][]);
int rr=erfen(,z,a[i][]);
Update(,ll,rr-,a[i][]);
}
Query();
int temp=-;
for(int i=;i<=z;i++)
{
if(temp!=col[i])
{
c[col[i]]++;
temp=col[i];
}
}
for(int i=;i<=;i++)
{
if(c[i]>)
{
printf("%d %d\n",i,c[i]);
}
}
printf("\n");
}
return ;
}

最新文章

  1. Java 读写文件方案
  2. poj1155 TELE (树上的背包)
  3. 使用Python从Markdown文档中自动生成标题导航
  4. android-自定义控件之液位指示器
  5. MongooseJS 4.6.4 发布,MongoDB 连接包
  6. javascript判断手机旋转横屏竖屏
  7. easyui treegrid 分页
  8. js定时器的一些小问题
  9. YARN应用程序的开发步骤
  10. js Module模式
  11. Alljoyn 概述(1)
  12. IOS开发:UIAlertView使用
  13. asp.net中用FileStream类实现下载文件功能,自定义下载路径,像IE下载一样
  14. xhr.readyState就绪状态
  15. Git初学二(SSH免密)
  16. python generator用法
  17. mysql 将一张表的数据更新到另外一张表中
  18. OOP 面向对象的理解
  19. Spring+Mybatis整合过程中找不到.properties文件
  20. REST与RESTFul API最佳实践

热门文章

  1. 问题驱动的Git学习
  2. Android开发出现 StackOverflowError
  3. 2018.5.9 Oracle数据库查询命令
  4. python学习笔记-环境安装【1】
  5. 第一单元OO总结
  6. Object-C知识点 (五) NSObject的继承关系
  7. Neural Style论文笔记+源码解析
  8. Linux 用户管理(三)
  9. python多进程并发进程池Pool
  10. 合肥工业大学宣城校区大学生创新创业训练项目申报书:“基于Spark平台的人工智能知识的知识图谱构建”