Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. int arr1[200010];
  6. int arr2[200010];
  7. int segmant_tree[1<<20];
  8. ll a ,b;
  9.  
  10. int getsum(int node ,int start , int en ){
  11. if(en<a||start>b)return 0;
  12. if(start>=a&&en<=b)return segmant_tree[node];
  13. int mid=(start+en)/2;
  14. return getsum(node*2,start,mid)+getsum(node*2+1,mid+1,en);
  15. }
  16. void update(int node , int start , int en){
  17. if(en<a||start>b)return ;
  18. if(start==a&&en==b){
  19. segmant_tree[node]++;
  20. return;
  21. }
  22. int mid=(start+en)/2;
  23. update(node*2,start,mid);
  24. update(node*2+1,mid+1,en);
  25. segmant_tree[node]=segmant_tree[node*2]+segmant_tree[node*2+1];
  26. }
  27. int main()
  28. {
  29. int t;
  30. cin>>t;
  31. while(t--){
  32. for(int i=0;i<1<<20;i++)segmant_tree[i]=0;
  33. int n ;
  34. cin>>n;
  35. int d;
  36. for(int i=1;i<=n;i++)cin>>arr1[i];
  37. for(int i=1;i<=n;i++){
  38. cin>>d;
  39. arr2[d]=i;
  40. }
  41. long long ans=0;
  42. for(int i=1;i<=n;i++){
  43. ll to=arr2[arr1[i]];
  44. a=to;
  45. b=n;
  46. ans+=getsum(1,1,n);
  47. b=to;
  48. update(1,1,n);
  49. }
  50. cout<<ans<<endl;
  51. }
  52. return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement