Guest User

Untitled

a guest
Feb 10th, 2013
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1.  
  2.  
  3. #include <iostream>
  4. #include<cstdio>
  5. #include<cstdlib>
  6. #include<cstring>
  7. #include<cmath>
  8. #include<algorithm>
  9. #include<vector>
  10. #include<queue>
  11. #include<stack>
  12. #include<set>
  13. #include<list>
  14. #include<map>
  15. #include<sstream>
  16. #include<fstream>
  17.  
  18. using namespace std ;
  19.  
  20. struct nodes{
  21.     int l,h,ans ;
  22. };
  23.  
  24. nodes node[2*32000] ;
  25. int L ,X;
  26. void build(int n,int s,int e){
  27.     if(s!=e){
  28.     node[n].l = s ;
  29.     node[n].h = e ;
  30.     node[n].ans = 0 ;
  31.     build(2*n,s,(s+e)/2) ;
  32.     build(2*n+1,(s+e)/2+1,e) ;
  33.     }
  34. }
  35.  
  36. void update(int n){
  37.     if(node[n].h>=X && node[n].l<=X) {
  38.             node[n].ans++ ;
  39.     //      cout<<node[n].l<<" "<<node[n].h<<" "<<node[n].ans<<endl ;
  40.             if(node[n].h!=X) {
  41.                 update(2*n) ;
  42.                 update(2*n+1) ;
  43.             }
  44.         }
  45. }
  46.  
  47. void  query(int n ){
  48. //    cout<<node[n].l<<" "<<node[n].h<<" "<<node[n].ans<<endl ;
  49.     if(node[n].h<=X) L+=node[n].ans ;
  50.     else if(node[n].l<=X){
  51.         query(2*n) ;
  52.         query(2*n+1) ;
  53.     }
  54. }
  55.  
  56.  
  57. int main() {
  58.     //freopen("d:\\in.txt","r",stdin) ;
  59.  
  60.     int y ,n,i ;
  61.     int level[15000+100] ;
  62.     memset(level,0,sizeof(level)) ;
  63.     build(1,0,32000) ;
  64.     scanf("%d",&n) ;
  65.     for(i=0;i<n;i++){
  66.         L = 0 ;
  67.         scanf("%d %d",&X,&y) ;
  68.         query(1) ;
  69.         level[L]++ ;
  70.         update(1) ;
  71.     }
  72.  
  73.     for(i=0;i<n;i++) cout<<level[i]<<endl ;
  74.  
  75.  return 0 ;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment