#include<stdio.h>
#include<stdlib.h>
int c[32010],s[15010],n;
int lowbit(int x){
return x & (x^(x-1));
}
void change(int k,int delta){
while(k<=32010){
c[k]=c[k]+delta;
k=k+lowbit(k);
}
}
int getsum(int k){
int t;
t=0;
while(k>0){
t+=c[k];
k=k-lowbit(k);
}
return t;
}
int main(){
int i,j,k,m;
int x,y;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d%d",&x,&y);
s[getsum(++x)]++;
change(x,1);
}
for(i=0;i<n;i++)
printf("%d\n",s[i]);
return 0;
}
树状数组
最新推荐文章于 2022-10-01 09:51:07 发布