mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
54 lines
877 B
C++
54 lines
877 B
C++
#include<stdio.h>
|
|
#include<string.h>
|
|
#define MAXN 100005
|
|
struct ST
|
|
{
|
|
int l,r,sum;
|
|
}st[MAXN*3];
|
|
int nn;
|
|
void build(int ll,int rr,int n)
|
|
{
|
|
st[n].l=ll;
|
|
st[n].r=rr;
|
|
st[n].sum=0;
|
|
if (ll==rr) return ;
|
|
int mid=(ll+rr)/2;
|
|
build(ll,mid,2*n);
|
|
build(mid+1,rr,2*n+1);
|
|
};
|
|
void color(int ll,int rr,int n)
|
|
{
|
|
if (st[n].l==ll&&st[n].r==rr) {st[n].sum++;return ;}
|
|
int mid=(st[n].l+st[n].r)/2;
|
|
if (rr<=mid) color(ll,rr,2*n);
|
|
else
|
|
if (ll>=mid+1) color(ll,rr,2*n+1);
|
|
else
|
|
{
|
|
color(ll,mid,2*n);
|
|
color(mid+1,rr,2*n+1);
|
|
}
|
|
}
|
|
void out(int n,int sum)
|
|
{
|
|
if (st[n].l==st[n].r) {printf("%d",sum+st[n].sum);if (st[n].l!=nn) printf(" ");return;}
|
|
out(2*n,sum+st[n].sum);
|
|
out(2*n+1,sum+st[n].sum);
|
|
}
|
|
int main()
|
|
{
|
|
int i,p,q;
|
|
while (scanf("%d",&nn)&&nn)
|
|
{
|
|
build(1,nn,1);
|
|
for (i=1;i<=nn;++i)
|
|
{
|
|
scanf("%d%d",&p,&q);
|
|
color(p,q,1);
|
|
}
|
|
out(1,0);
|
|
printf("/n");
|
|
}
|
|
return 0;
|
|
}
|