Guest User

Untitled

a guest
Oct 18th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. N = gets.chomp.to_i
  2. d = []
  3. N.times do
  4. d << gets.chomp.to_i
  5. end
  6. d.sort!
  7. R = 10**9 + 7
  8.  
  9. a = Array.new(N, 0)
  10. i = N - 4
  11. (N-3).downto(1) do |j|
  12. x = d[j]
  13. loop do
  14. break if i < 0
  15. if x >= d[i] * 2
  16. a[j] = i + 1
  17. break
  18. end
  19. i -= 1
  20. end
  21. end
  22.  
  23. b = Array.new(N, 0)
  24. i = 3
  25. 2.upto(N-2) do |j|
  26. x = d[j]
  27. loop do
  28. break if i > N - 1
  29. if x * 2 <= d[i]
  30. b[j] = N - i
  31. break
  32. end
  33. i += 1
  34. end
  35. end
  36. (N-2).downto(0) do |i|
  37. b[i] += b[i+1]
  38. end
  39.  
  40. ans = 0
  41. i = 2
  42. 1.upto(N-3) do |j|
  43. x = d[j]
  44. loop do
  45. break if i > N - 2
  46. if x * 2 <= d[i]
  47. ans += (a[j] * b[i])
  48. ans %= R
  49. break
  50. end
  51. i += 1
  52. end
  53. end
  54. puts ans
Add Comment
Please, Sign In to add comment