Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- #define ld long double
- #define II pair<int,int>
- #define III pair<int, II>
- #define F first
- #define S second
- #define _mp make_pair
- #define VI vector<int>
- #define VII vector<II>
- #define _f front
- #define _b back
- #define _pb push_back
- #define _pf push_front
- #define _Pb pop_back
- #define _Pf pop_front
- #define _all(v) v.begin(), v.end()
- #define LINE putc('\n', stdout)
- #define SPACE putc(' ' , stdout)
- #define TAB putc('\t', stdout)
- #define _out(_) printf("%i",_)
- #define __out(_,__) printf("%i %i",_,__)
- #define ___out(_,__,___) printf("%i %i %i",_,__,___)
- #define _outS(_) printf("%s",_)
- #define _outC(_) printf("%c",_)
- #define _in(_) scanf("%i", &_)
- #define __in(_,__) scanf("%i%i",&_,&__)
- #define ___in(_,__,___) scanf("%i%i%i",&_,&__,&___)
- #define _inS(_) scanf("%s",_)
- #define __inS(_, __) scanf("%s%s",_,__)
- #define _inC(_) scanf("%c",&_)
- #define _debug(_) printf("-----------> Debuging : %i\n",_ );
- #define _YES printf("YES")
- #define _NO printf("NO")
- #define _yes printf("yes")
- #define _no printf("no")
- #define _for(i, n) for(int i=0 ; i<n ; i++)
- #define __for(i, j, n) for(int i=j ; i<n ; i++)
- #define _rof(i, n) for(int i=n ; i-- ; )
- #define __rof(i, j, n) for(int i=n-1 ; i>=j ; i-- )
- #define rm_imp(d, p) (round(d*p)/p)
- #define INF 2e9
- #define Mod 1000000007
- #define MAXN 100010
- //---------------------------------------- Fast I/O --------------------------------------------------------
- inline int ReadInt(){
- int i= 0; char c= 0; char flag= 1;
- while((c<'0'||c>'9')&& c!='-')c=getchar();
- if(c=='-'){flag=0;c=getchar();}
- for(;c>='0'&&c<='9';c= getchar()) i=i*10+c-'0';
- if(!flag)i=-i;
- return i;
- }
- inline void WriteInt(int n){
- if(n<0){putchar('-');WriteInt( -n ); return;}
- if(n<10)putchar(n+'0');
- else{WriteInt(n/10); putchar(n%10+'0');}
- }
- //----------------------------------------------------------------------------------------------------------
- struct CustomHash
- {
- template <typename T, typename U>
- std::size_t operator()(const std::pair<T, U> &x) const
- {
- return std::hash<T>()(x.first) ^ std::hash<U>()(x.second);
- }
- };
- II A[MAXN];
- int n,t;
- //2D BIT
- unordered_map<II, int, CustomHash> fen;
- void inline UPD(int B, int C){
- for( ; B<=n ; B+=B&-B)
- for(int c=C ; c<=n ; c+= c&-c) fen[{B,c}]++;
- }
- int inline RQ(int B, int C)
- {
- int sum=0;
- for( ; B ; B-=B&-B)
- for(int c=C ; c ; c-= c&-c) sum+=fen[{B,c}];
- return sum;
- }
- int main()
- {
- _in(t);
- while(t--)
- {
- int tmp,ans=0, per=0;
- _in(n);
- _for(i, n) tmp=ReadInt(), A[tmp-1].F=ReadInt(), A[tmp-1].S=ReadInt();
- //_for(i, n) _in(tmp), __in(A[tmp-1].F, A[tmp-1].S);
- _for(i, n)
- {
- if(i%1000==0) printf("%i %%\n", ++per);
- ans += !RQ(A[i].F, A[i].S);
- UPD(A[i].F, A[i].S);
- }
- _out(ans); LINE;
- fen.clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement