Advertisement
Guest User

Pizza time

a guest
Mar 21st, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. n = int(input())
  2. n = 2**n
  3. a = [0]+list(map(int,input().split()))
  4.  
  5.  
  6. def Find(n,a):
  7. if n == 2:
  8. return [a[1]]
  9. else:
  10. minimum = a[1]
  11.  
  12. q1,q2 = 0,1
  13. new = [a[0]]
  14. check = []
  15.  
  16. #Делим на 2 части
  17.  
  18. while q2 < n:
  19. if (q1 < len(new)) and (new[q1]+minimum == a[q2]):
  20. q1 = q1 + 1
  21. check.append(a[q2])
  22. else:
  23. new.append(a[q2])
  24. q2 = q2 + 1
  25.  
  26. #Проверяем правильность деления
  27.  
  28. flag = True
  29.  
  30. if not len(new) == len(check):
  31. flag = False
  32.  
  33. if flag == True:
  34. for i in range(n//2):
  35. if not new[i]+minimum == check[i]:
  36. flag = False
  37. break
  38.  
  39.  
  40. if flag == False:
  41. return -1
  42. else:
  43. add = Find(n//2,new)
  44. if add == -1:
  45. return -1
  46. else:
  47. return [minimum] + add
  48.  
  49.  
  50. result = Find(n,a)
  51.  
  52. if result == -1:
  53. print(-1)
  54. else:
  55. print(', '.join(list(map(str,result))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement