Advertisement
omar-alhelo

Untitled

Sep 26th, 2018
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define ld long double
  5. #define II pair<int,int>
  6. #define III pair<int, II>
  7. #define F first
  8. #define S second
  9. #define _mp make_pair
  10. #define VI vector<int>
  11. #define VII vector<II>
  12. #define _f front
  13. #define _b back
  14. #define _pb push_back
  15. #define _pf push_front
  16. #define _Pb pop_back
  17. #define _Pf pop_front
  18. #define _all(v) v.begin(), v.end()
  19. #define LINE  putc('\n', stdout)
  20. #define SPACE putc(' ' , stdout)
  21. #define TAB   putc('\t', stdout)
  22. #define _out(_)            printf("%i",_)
  23. #define __out(_,__)        printf("%i %i",_,__)
  24. #define ___out(_,__,___)   printf("%i %i %i",_,__,___)
  25. #define _outS(_)           printf("%s",_)
  26. #define _outC(_)           printf("%c",_)
  27. #define _in(_)             scanf("%i", &_)
  28. #define __in(_,__)         scanf("%i%i",&_,&__)
  29. #define ___in(_,__,___)    scanf("%i%i%i",&_,&__,&___)
  30. #define _inS(_)            scanf("%s",_)
  31. #define __inS(_, __)       scanf("%s%s",_,__)
  32. #define _inC(_)            scanf("%c",&_)
  33. #define _debug(_) printf("-----------> Debuging : %i\n",_ );
  34. #define _YES printf("YES")
  35. #define _NO  printf("NO")
  36. #define _yes printf("yes")
  37. #define _no  printf("no")
  38. #define _for(i, n) for(int i=0 ; i<n ; i++)
  39. #define __for(i, j, n) for(int i=j ; i<n ; i++)
  40. #define _rof(i, n) for(int i=n ; i-- ;    )
  41. #define __rof(i, j, n) for(int i=n-1 ; i>=j ; i-- )
  42. #define rm_imp(d, p) (round(d*p)/p)
  43. #define INF 2e9
  44. #define Mod 1000000007
  45. #define MAXN 100010
  46. //---------------------------------------- Fast I/O  --------------------------------------------------------
  47. inline int ReadInt(){
  48.     int i= 0; char c= 0; char flag= 1;
  49.     while((c<'0'||c>'9')&& c!='-')c=getchar();
  50.     if(c=='-'){flag=0;c=getchar();}
  51.     for(;c>='0'&&c<='9';c= getchar()) i=i*10+c-'0';
  52.     if(!flag)i=-i;
  53.     return i;
  54. }
  55. inline void WriteInt(int n){
  56.     if(n<0){putchar('-');WriteInt( -n ); return;}
  57.     if(n<10)putchar(n+'0');
  58.     else{WriteInt(n/10); putchar(n%10+'0');}
  59. }
  60. //----------------------------------------------------------------------------------------------------------
  61. struct CustomHash
  62. {
  63.   template <typename T, typename U>
  64.   std::size_t operator()(const std::pair<T, U> &x) const
  65.   {
  66.     return std::hash<T>()(x.first) ^ std::hash<U>()(x.second);
  67.   }
  68. };
  69. II A[MAXN];
  70. int n,t;
  71. //2D BIT
  72. unordered_map<II, int, CustomHash> fen;
  73. void inline UPD(int B, int C){
  74.     for( ; B<=n ; B+=B&-B)
  75.         for(int c=C ; c<=n ; c+= c&-c) fen[{B,c}]++;
  76. }
  77. int inline RQ(int B, int C)
  78. {
  79.     int sum=0;
  80.     for( ; B ; B-=B&-B)
  81.         for(int c=C ; c ; c-= c&-c) sum+=fen[{B,c}];
  82.     return sum;
  83. }
  84. int main()
  85. {
  86.     _in(t);
  87.     while(t--)
  88.     {
  89.         int tmp,ans=0, per=0;
  90.         _in(n);
  91.         _for(i, n) tmp=ReadInt(), A[tmp-1].F=ReadInt(), A[tmp-1].S=ReadInt();
  92.         //_for(i, n) _in(tmp), __in(A[tmp-1].F, A[tmp-1].S);
  93.         _for(i, n)
  94.         {
  95.             if(i%1000==0) printf("%i %%\n", ++per);
  96.             ans += !RQ(A[i].F, A[i].S);
  97.             UPD(A[i].F, A[i].S);
  98.         }
  99.         _out(ans); LINE;
  100.         fen.clear();
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement