Дії над множинами

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 4,00 (partial)
Time limit: 0.5s
Memory limit: 256M
Input: stdin
Output: stdout

Suggester:
Problem type

Як відомо, множина — це сукупність елементів, що розглядається (вся сукупність) як єдине ціле. Зазвичай вважають, що множина не може містити один і той самий елемент кілька разів (лише або містить, або ні). Взагалі кажучи, елементи можуть бути різної природи, але у цій задачі елементами будуть лише цілі невід'ємні числа. Для множин відомі деякі стандартні операції. Ми розглянемо лише три найстандартніші з них:

Об'єднання (математичне позначення , воно ж ~\cup~, у нас позначається UNION) двох множин ~A~ та ~B~ — це множина всіх елементів, що належать хоча б одній з множин ~A~ або ~B~. Якщо елемент належить обом множинам, він все одно враховується один раз.

Перетин (математичне позначення , воно ж ~\cap~, у нас позначається INTERSECTION) двох множин ~A~ та ~B~ — це множина всіх елементів, що належать обом множинам ~A~ та ~B~ одночасно.

Різниця (математичне позначення \ (зворотня коса риска), у нас позначається DIFFERENCE) двох множин ~A~ та ~B~ — це множина всіх елементів, що належать множині ~A~, але не належать ~B~. Ця операція, єдина з трьох згаданих, несиметрична (не комутативна).

Напишіть програму, яка виконуватиме ці операції над множинами цілих невід'ємних чисел, поданих у вигляді монотонно зростаючих послідовностей, формуючи результат теж у вигляді монотонно зростаючої послідовності.

Вхідні дані

Вхідні дані завжди містять рівно 5 рядків.

1-ий: одне з трьох слів UNION або INTERSECTION або DIFFERENCE.

2-ий: єдине ціле число ~N~ (~1 \leqslant N \leqslant 123456~), що задає кількість елементів множини ~A~.

3-ій: послідовність з рівно ~N~ розділених одинарними пробілами чисел-елементів множини ~A~; ~0 \leqslant a_1 < a_2 < \dots < a_N \leqslant 10^9~.

4-ий та 5-ий рядки задають множину ~B~ у такому ж форматі, як 2-ий і 3-ій множину ~A~.

Результати

Виведіть у один рядок, розділяючи пробілами, усі елементи множини-відповіді. Рядок завершити символом переведення рядка.

Якщо результат не містить жодного елементу (наприклад, дія INTERSECTION, а ~A~ та ~B~ не мають спільних елементів), виведення повинно не містити жодного видимого символу, але містити переведення рядка.

Приклади

Вхід 1

UNION
3
2 3 5
3
1 2 4

Результат 1

1 2 3 4 5

Вхід 2

INTERSECTION
3
2 3 5
3
1 2 4

Результат 2

2

Вхід 3

DIFFERENCE
3
2 3 5
3
1 2 4

Результат 3

3 5

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.