没搞大明白
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define maxn 32010
int sum[maxn];
int level[maxn];
int lowbit(int k){
return k & (-k);
}
void add(int i, int v){
while(i <= maxn){
sum[i] += v;
i += lowbit(i);
}
}
int getSum(int i){
int s = 0;
while(i){
s += sum[i];
i -= lowbit(i);
}
return s;
}
int main(){
int n, i, x, y;
while(scanf("%d", &n) != EOF){
memset(level, 0, sizeof(level));
memset(sum, 0, sizeof(sum));
for(i=0; i<n; i++){
scanf("%d %d", &x, &y);
level[getSum(x+1)]++;
add((x+1), 1);
}
for(i=0; i<n; i++){
printf("%d\n", level[i]);
}
}
return 0;
}
参考:http://shizhixinghuo.diandian.com/post/2012-09-12/40039901557