Advertisement
Guest User

Untitled

a guest
Apr 1st, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. # pylint: disable=C0111
  4.  
  5. # GleanStart
  6. # 2
  7. # 6
  8. # in the force strong you are
  9. # you are strong in the force
  10. # 6
  11. # or i will help you not
  12. # or i will not help you
  13. # GleanEnd
  14. def _mergedinv(arr, lo, hi, tmp):
  15. mid = (lo + hi) // 2
  16. i = lo
  17. k = lo
  18. j = mid
  19. invcnt = 0
  20. while i < mid and j < hi:
  21. if arr[i] <= arr[j]:
  22. tmp[k] = arr[i]
  23. i += 1
  24. else:
  25. tmp[k] = arr[j]
  26. invcnt += mid - i
  27. j += 1
  28. k += 1
  29. while i < mid:
  30. tmp[k] = arr[i]
  31. k += 1
  32. i += 1
  33. while j < hi:
  34. tmp[k] = arr[j]
  35. k += 1
  36. j += 1
  37. arr[lo:hi] = tmp[lo:hi]
  38. return invcnt
  39.  
  40. def _inversions(arr, lo, hi, tmp):
  41. if hi - lo <= 1:
  42. return 0
  43. inv = 0
  44. inv += _inversions(arr, lo, (lo + hi) // 2, tmp)
  45. inv += _inversions(arr, (lo + hi) // 2, hi, tmp)
  46. inv += _mergedinv(arr, lo, hi, tmp)
  47. return inv
  48.  
  49. def inversions(arr):
  50. tmp = [0] * len(arr)
  51. return _inversions(arr, 0, len(arr), tmp)
  52.  
  53. def main():
  54. for _ in xrange(int(raw_input())):
  55. raw_input()
  56. where_is = {}
  57. for x, word in enumerate(raw_input().split()):
  58. where_is[word] = x
  59. arr = []
  60. for word in raw_input().split():
  61. arr.append(where_is[word])
  62. print inversions(arr)
  63.  
  64. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement