def read_input():
data = []
current_container = []
while True:
try:
line = input().strip()
if line == '':
if current_container:
data.append(current_container)
break
num = int(line)
if num == -1:
if current_container:
data.append(current_container)
current_container = []
else:
current_container.append(num)
except ValueError:
continue
return data
def find_unique_numbers(containers):
all_numbers = set()
repeated_numbers = set()
for container in containers:
container_set = set(container)
for num in container_set:
if num in all_numbers:
repeated_numbers.add(num)
all_numbers.add(num)
unique_numbers = all_numbers - repeated_numbers
return unique_numbers
def main():
containers = read_input()
unique_numbers = find_unique_numbers(containers)
print(' '.join(map(str, unique_numbers)))
if __name__ == "__main__":
main()
Во Вселенной нашей задачи правила немного другие: видов антиматерии столько, сколько сосудов, в которых они содержатся. Если встречаются частицы с одинаковой величиной из разных сосудов, то пропадают все с таким значением, независимо от того, сколько их было. В одном сосуде могут находиться частицы с одинаковым значением, поскольку они одного сорта.
Итак, у нас есть несколько сосудов, в каждом из них находятся частицы одного сорта.
Будем считать, что для того, чтобы остаться, частица ни разу не должна встретить своего повторения из другого сосуда. Любое количество повторений – и все повторяющиеся частицы пропадают.
Напишите программу, которая определит, что останется, если соединить частицы, находящиеся в разных сосудах.
Формат ввода
Вводятся числа, пока не будет введена пустая строка. Разделитель сосудов – число -1. Количество сосудов заранее неизвестно.
Формат вывода
Вывести в одной строке через пробел все числа, для которых не было повторений в других сосудах. Порядок вывода неважен, каждую частицу выводить один раз, даже, если в одном и том же сосуде она встречалась не однажды.
Пример №1
Ввод
45
26
22
22
-1
26
-1
45
10
26
-1
Вывод
22 10
Пример №2
Ввод
41
8
36
9
37
-1
41
50
41
-1
Вывод
37 8 36 9 50