源数据关于y坐标递增,所以只需统计x坐标小于给定坐标的数目作为星等。
/*
* hdu-1541 stars
* mike-w
* 2011-12-9
* -------------------
* tag:
* 树状数组
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
const int maxn=15555;
const int maxco=32222;
int seq[maxco];
int c[maxn];
int n;
inline int lowbit(int x)
{
return x&(-x);
}
int add(int p,int inc)
{
while(p<=maxco)
seq[p]+=inc,p+=lowbit(p);
return 0;
}
int sum(int p)
{
int ret=0;
while(p>0)
ret+=seq[p],p-=lowbit(p);
return ret;
}
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
#endif
int i,x,y;
while(scanf("%d",&n)!=EOF)
{
memset(seq,0,sizeof(seq));
memset(c,0,sizeof(c));
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
c[sum(x+1)]++;
add(x+1,1);
}
for(i=0;i<n;i++)
printf("%d\n",c[i]);
}
return 0;
}