#include<stdio.h>
#include<algorithm>
using namespace std;
void alter(int i,int n,int T[]) {
while(i<=n) {
T[i]++;
i+=i&-i;
}
}
int search(int i,int T[]) {
int sum=0;
while(i) {
sum+=T[i];
i-=i&-i;
}
return sum;
}
int main() {
int n;
while(scanf("%d",&n)!=EOF) {
int A[15005]={0},T[32005]={0},x[15005]={0},y,X=0;
for(int i=0; i<n; i++) {
scanf("%d %d",&x[i],&y);
x[i]++;
X=max(X,x[i]);
}
for(int i=0; i<n; i++){
A[search(x[i],T)]++;
alter(x[i],X,T);
}
for(int i=0; i<n; i++)
printf("%d\n",A[i]);
}
return 0;
}
HDU1541(树状数组)
最新推荐文章于 2021-08-06 17:33:27 发布