/*
Name:
Copyright:
Author:
Date: 22-03-12 10:01
Description:
9960222 panzhizhou_ahstu 2352 Accepted 560K 813MS C++ 869B 2012-03-22 09:56:27
*/
#include<iostream>
#define maxn 32008
using namespace std;
struct node
{
int x,y;
};
node input[maxn];
int tree[maxn];
inline int lowbit(int x)
{
return x&(-x);
}
void update(int x,int val)
{
while(x<=32006)
{
tree[x]+=val;
// x+=lowbit(x);
x+=(x&-x); //放在函數裏面要快很多啊,618ms
}
}
int getsum(int x)
{
int sum=0;
while(x>0)
{
sum+=tree[x];
x-=lowbit(x);
}
return sum;
}
int main()
{
int n;
int res[maxn/2];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>input[i].x>>input[i].y;
input[i].x++;
input[i].y++;
}
memset(tree,0,sizeof(tree));
memset(res,0,sizeof(res));
for(int i=1;i<=n;i++)
{
++res[getsum(input[i-1].x)];
update(input[i-1].x,1);
}
for(int i=0;i<n;i++)
cout<<res[i]<<endl;
system("pause");
return 0;
}