AcWing 1265. 数星星
原题链接
中等
作者:
阿有
,
2020-10-13 09:23:34
,
所有人可见
,
阅读 495
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 32010;
int n;
int tr[N];//记录的是前x的个数
int level[N];
int lowbit(int x){
return x & -x;
}
void add(int x, int v){
for(int i = x; i <= N; i += lowbit(i)) tr[i] += v;
}
int sum(int x){
int res = 0;
for(int i = x; i; i -= lowbit(i)) res += tr[i];
return res;
}
int main(){
cin >> n;
int m = n;
while(n--){
int a, b;
cin >> a >> b;
a++;
level[sum(a)] ++;
add(a, 1);
}
for(int i = 0; i < m; i++) cout << level[i] << endl;
return 0;
}
//由于输入的y,是从小到大输入,所以,当前的x,y 是最高的,只需记录1 - x的星星个数