Advertisement
korol

Untitled

Jul 22nd, 2018
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. n = int(input())
  2. s = set(map(int, input().split()))
  3. m = int(input())
  4. a = list(map(int, input().split()))
  5.  
  6. s = list(s)
  7. s.sort()
  8. n = len(s)
  9. l = int(n**0.5)
  10. b = [] #l, idx_l, r, idx_r не включно, place_l
  11. for i in range(n//l+1 if n % l != 0 else n//l):
  12. b.append([])
  13. #0, 1
  14. if i == 0:
  15. b[i].append(s[0])
  16. b[i].append(0)
  17. else:
  18. b[i].append(s[b[i-1][3]])
  19. b[i].append(b[i-1][3])
  20. #2
  21. b[i].append(s[min((i+1)*l-1, n-1)])
  22. #3
  23. b[i].append(min(l*(i+1), n))
  24. #4
  25. b[i].append(n - b[i][1])
  26. b = b[::-1]
  27. for j in range(m):
  28. fl = 0
  29. #0
  30. if a[j] < s[0]:
  31. print(n+1)
  32. continue
  33. num = 0
  34. for k in range(len(b)):
  35. #1
  36. if a[j] == b[k][0]:
  37. print(b[k][4])
  38. fl = 1
  39. break
  40. if a[j] > b[k][0]:
  41. num = k
  42. #2
  43. if num == 0:
  44. print(1)
  45. fl = 1
  46. break
  47. if fl == 1:
  48. continue
  49. place = b[num][4]
  50. #3
  51. if a[j] in s:
  52. for q in range(b[k][1], b[k-1][1]):
  53. if s[q] == a[j]:
  54. print(n-q)
  55. break
  56. else:
  57. place = 0
  58. for q in range(b[k][1], b[k-1][1]):
  59. if s[q] > a[j]:
  60. place = n-q+2
  61. print(place if place != 0 else b[k-1][4]+1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement