# include <stdio.h>
# include <string.h>
int maxn=32009;
int lev[32009],a[32009];
int low(int x)
{
return (-x)&x;
}
int get(int x)
{
int sum=0;
while(x>0)
{
sum+=a[x];
x-=low(x);
}
return sum;
}
void up(int x)
{
while(x<maxn)
{
a[x]++;
x+=low(x);
}
}
int main()
{
int n,x,y;
while(scanf("%d",&n)!=EOF&&n)
{
memset(lev,0,sizeof(lev));
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
x++;
lev[get(x)]++;
up(x);
}
for(int i=0;i<n;i++)
printf("%d\n",lev[i]);
}
return 0;
}
树状数组第一题 注意数组开的范围和X挂钩的 而不是和Y一样
zoj 2352
最新推荐文章于 2019-01-06 16:09:43 发布