ural 1028. Stars 树状数组
/*
题目:
星星有等级,每颗星星的等级划分为在它下方(坐标轴上)有多少颗星星即为多少等级
分析:
由于先输入的是x坐标,而y坐标已经是按照由小到大输入的,所以可以用树状数组来求和的形式
来求出该行星的等级。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define X 40005
int c[X],ans[X],n;
int lowbit(int x){
return x & -x;
}
void modify(int x){
while(x<X){
c[x]++;
x += lowbit(x);
}
}
int sum(int x){
int cnt = 0;
while(x>0){
cnt += c[x];
x -= lowbit(x);
}
return cnt;
}
int main(){
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
int x,y;
cin>>n;
memset(c,0,sizeof(c));
memset(ans,0,sizeof(ans));
for(int i=0;i<n;i++){
scanf("%d%d",&x,&y);
x++;
modify(x);
ans[sum(x)-1]++;
}
for(int i=0;i<n;i++)
printf("%d\n",ans[i]);
return 0;
}