#include<iostream>
#include<cstdio>
#include<string.h>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int maxn = 15005;
const int maxx = 32050;
int ar[maxx], lev[maxn];
int n;
int lowbit(int x){
return x & (-x);
}
int sum(int x){
int ret = 0;
while(x > 0){
ret += ar[x];
x -= lowbit(x);
}
return ret;
}
void add(int x){
while(x < maxx){
ar[x] += 1;
x += lowbit(x);
}
}
int main(){
int x, y;
while(scanf("%d", &n)!=EOF){
memset(lev, 0, sizeof(lev));
memset(ar, 0, sizeof(ar));
for(int i = 0; i < n; ++i){
scanf("%d%d",&x, &y);
++x;
lev[sum(x)]++;
add(x);
}
for(int i = 0; i < n; ++i){
printf("%d\n", lev[i]);
}
}
return 0;
}
poj 2352 树状数组
最新推荐文章于 2022-09-24 16:05:55 发布