可以用线段树做的,但是没有必要啊~
好吧有时间我会写一个线段树的
#include<cstdio>
#include<algorithm>
using namespace std;
struct Node {
int x, y;
}a[15005];
int n, c[32010], ans[15005];
int lowbit(int x) {return x&-x;}
int cmp(Node p, Node q){
return (p.x == q.x) ? (p.y < q.y) : (p.x < q.x);
}
int sum(int x) {
int ret = 0;
while(x > 0) {
ret += c[x];
x -= lowbit(x);
}
return ret;
}
void add(int x){
while(x <= 32005) {
c[x]++;
x += lowbit(x);
}
}
int main(){
scanf("%d", &n);
int i;
for(i = 1; i <= n; i++)
scanf("%d %d", &a[i].x, &a[i].y);
sort(a+1, a+n+1, cmp);
for(i = 1; i <= n; i++){
ans[sum(a[i].y)]++;
add(a[i].y);
}
for(i = 0; i < n; i++)
printf("%d\n", ans[i]);
return 0;
}
其实我不会写的啦啦啦,有时间写上点难度的题目去了。。。