POJ 2352 Stars

  
    
/*
题目已按x,y轴排序 画个图就理解了
*/
#include
< stdio.h >
#include
< stdlib.h >
const int MAXN = 15001 ;
int n;
int a[ 32001 ]; // 树状数组
int level[MAXN];
int lowbit( int t){
return t & ( - t);
}
void add( int t){
while (t <= 32001 ){
a[t]
++ ;
t
+= lowbit(t);
}
}
int sum( int t){
int ans = 0 ;
while (t > 0 ){
ans
+= a[t];
t
-= lowbit(t);
}
return ans;
}
int main(){
int x, y;
scanf(
" %d " , & n);
for ( int i = 0 ; i < n; ++ i){
scanf(
" %d%d " , & x, & y);
level[sum(x
+ 1 )] ++ ; // 0<=X,Y<=32000
add(x + 1 );
}
for ( int i = 0 ; i < n; ++ i)
printf(
" %d\n " ,level[i]);
return 0 ;
}

你可能感兴趣的:(tar)