Dec-6task.py 2.7 KB

1234567891011121314151617181920212223242526
  1. # Сегодняшняя задача Ксюши — провести мастер-класс по программированию для стажеров Тинькофф Старта. Для этого она решила устроить небольшую игру: Ксюша будет поддерживать множество, а стажеры будут говорить числа, которые в него добавить. После каждого добавления Ксюша будет называть максимальное значения побитового исключающего ИЛИ среди всех пар чисел этого множества.
  2. # Формально, если множество после очередной операции добавления равно S, то Ксюша хочет найти в нем такие два числа a, b ∈ Sb∈S, что значение a ⊕ b максимально. Если число уже присутствовало в множестве до добавления, само множество никак не меняется. Выводить ответ при этом нужно после каждого добавления, даже если множество осталось прежним.
  3. # Ксюша знает, что кто-то из стажеров наверняка знает, как она будет считать ответы для этой игры, поэтому просит вас написать программу, которая будет обрабатывать запросы на добавление чисел.
  4. # Формат входных данных
  5. # В первой строке вводится целое число q (1 ≤ q ≤ 3 ⋅ 10^5) — количество запросов.
  6. # Следующие q строк описывают запросы. i-ая строка содержит целое число k_i (0 ≤ k_i ≤ 2^{32} - 1), которое стажеры просят добавить во множество.
  7. # Формат выходных данных
  8. # Выведите q строк, чтобы i-ая строка содержала единственное целое число x_i — максимальное значение исключающего ИЛИ по всем парам чисел из множества после первых i операций.
  9. n = int(input())
  10. num = int(input())
  11. max = 0
  12. nums = {num}
  13. print(0)
  14. while n > 1:
  15. num2 = int(input())
  16. nums.add(num2)
  17. nums_list = list(nums)
  18. for i in range(len(nums_list)):
  19. for j in range(len(nums_list)):
  20. if nums_list[i] ^ nums_list[j] > max:
  21. max = nums_list[i] ^ nums_list[j]
  22. n = n - 1
  23. print(max)