It's a simple tree_array problem.
The portal:http://acm.hdu.edu.cn/showproblem.php?pid=1541
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
const int M = 32005;
const int N = 15005;
int Bit[M<<1];
void Insert(int x,int value){
for(int i = x ; i<= M ; i += i & (-i)){
Bit[i] += value;
}
}
int Query(int x){
int ret = 0;
if(x <= 0) return ret;
for(int i = x; i ; i -= i & (-i)){
ret += Bit[i];
}
return ret;
}
void Deal_with(){
int n;
int sum[N];
while(~scanf("%d",&n)){
int tempx,tempy;
memset(sum,0,sizeof(sum));
memset(Bit,0,sizeof(Bit));
for(int i=0;i<n;i++){
scanf("%d %d",&tempx,&tempy);
sum[Query(tempx+1)] ++ ;
Insert(tempx+1,1);
}
for(int i=0;i<n;i++){
printf("%d\n",sum[i]);
}
}
}
int main(void){
//freopen("a.in","r",stdin);
Deal_with();
return 0;
}