Множества

53 задачи
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Как известно, в Отеле скучно не бывает: то фуршет, то номерки какие-то загадочные. А вот сейчас, для гостей опять подготовили нечто невероятное: приезжает Звезда.

Звезды — народ причудливый, вот например, Звезда, приехавшая в Отель, боится больших скоплений людей, поэтому поклонников на автограф-сессии будет принимать в специальном кабинете и только по одному, все же остальные гости будут ожидать в зале. И все бы хорошо, человечество давно придумало очереди, только вот во время сессии проходит фуршет, поэтому все разбредутся по залу и никакой очереди в ее привычном понимании устроить не получится и САО (служба администрирования очередей) решила обратиться к вам.

Вас просят написать систему учета людей, которая должна уметь выводить номер текущего первого в очереди гостя, добавлять людей в очередь и удалять из нее. Но мало того, что неразбериха с фуршетом, САО ещё и по неизвестной нам причине поощряет использование знакомств и связей в личных корыстных целях (в народе <<блат>>): если в зал приходит человек \(x\), то он хочет найти своего друга \(y\) и, если \(y\) находится в зале, то \(x\) в очереди становится прямо за ним, иначе \(x\) помещается системой в конец очереди. Также может произойти такое, что гостю надоело ждать и тогда он просто уходит из зала ожидания и исключается из очереди.

Конечно, обработка событий по видео-камерам — увлекательный процесс, но САО решили, что проще будет дать уже готовую последовательность данных. Итак, вашей системе нужно обрабатывать следующие запросы:

  1. in x y — в зал фуршета приходит гость с номером \(x\), который дружит с гостем номер \(y\). Если \(y\) уже находится в очереди, то \(x\) встает за ним, иначе в конец. Стоит отметить, что гости очень восхищаются Звездой и могут приходить и не по одному разу.

  2. out x — гостю под номером \(x\) надоело ждать и он уходит (гарантируется, что в данный момент гость с таким номером находится в зале).

  3. check — Звезда готова дать очередной автограф и САО хочет узнать, кто первый в очереди (после этого счастливец получит автограф и уйдет по своим делам). Если очередь пуста, выведите \(-1\).

Формат входных данных
В первой строке вводится единственное натуральное число \(q\) (\(1 \leq q \leq 200\,000\)) — количество запросов. Далее в \(q\) строках вводятся вышеописанные запросы. Все числа, содержащиеся в запросах натуральные и не превосходят \(10^8\).

Формат выходных данных
На каждый запрос \(check\) в отдельной строке выведете номер первого человека в очереди.

Два интернет-магазина продают товары. Маркетолог хочет найти:

1. Товары, которые продаются только в первом магазине

2. Товары, которые продаются только во втором магазине

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — количество товаров первого магазина.

Во второй строке — N целых чисел — коды товаров первого магазина (1 ≤ код ≤ 1000000).

В третьей строке — число M (1 ≤ M ≤ 100000) — количество товаров второго магазина.

В четвёртой строке — M целых чисел — коды товаров второго магазина.

Формат выходных данных

Первая строка: товары только первого магазина (в порядке возрастания через пробел) или "NONE".

Вторая строка: товары только второго магазина (в порядке возрастания через пробел) или "NONE".

Два программиста, Алекс и Макс, решали задачи на соревновании. Жюри хочет узнать, какие задачи решил ровно один из них (не оба сразу).

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — количество задач, решённых Алексом.

Во второй строке — N целых чисел — номера задач Алекса (1 ≤ номер ≤ 1000000).

В третьей строке — число M (1 ≤ M ≤ 100000) — количество задач, решённых Максом.

В четвёртой строке — M целых чисел — номера задач Макса.

Формат выходных данных

Номера задач, решённых ровно одним программистом (в порядке возрастания через пробел). Если таких нет — выведите "NONE".

Вика и Ника собирают марки. Они решили объединить свои коллекции для выставки. Нужно вывести все уникальные номера марок, которые есть хотя бы у одной из девочек.

 

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — количество марок у Вики.

Во второй строке — N целых чисел — номера марок Вики (1 ≤ номер ≤ 1000000).

В третьей строке — число M (1 ≤ M ≤ 100000) — количество марок у Ники.

В четвёртой строке — M целых чисел — номера марок Ники.

Формат выходных данных

Все уникальные номера марок в порядке возрастания через пробел.

Два брата, Коля и Толя, написали списки желаемых подарков на Новый Год. Мама хочет узнать, какие подарки хочет только Коля (но не Толя), чтобы подарить их именно ему.

 

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — количество подарков в списке Коли.

Во второй строке — N целых чисел — номера подарков Коли (1 ≤ номер ≤ 1000000).

В третьей строке — число M (1 ≤ M ≤ 100000) — количество подарков в списке Толи.

В четвёртой строке — M целых чисел — номера подарков Толи.

Формат выходных данных

Все номера подарков, которые хочет только Коля (в порядке возрастания через пробел). Если таких нет — выведите "NONE".

Два друга, Алиса и Боб, составили списки своих любимых чисел. Найди все числа, которые нравятся ОБОИМ друзьям. Числа в списках Алисы и Боба могут повторяться и не обязательно отсортированы.

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — размер списка Алисы.

Во второй строке — N целых чисел — любимые числа Алисы (1 ≤ число ≤ 1000000).

В третьей строке — число M (1 ≤ M ≤ 100000) — размер списка Боба.

В четвёртой строке — M целых чисел — любимые числа Боба.

Формат выходных данных

Все общие числа в порядке возрастания через пробел. Если общих чисел нет — выведите "NONE".

Петя записывает ID своих друзей в социальной сети. Некоторые ID повторяются (когда друзья заходят несколько раз). Петя хочет получить список всех уникальных ID в отсортированном порядке от меньшего к большему.

Формат входных данных

В первой строке — число N (1 ≤ N ≤ 100000) — количество записей.

Во второй строке — N целых чисел — ID друзей (1 ≤ ID ≤ 1000000).

Формат выходных данных

Все уникальные ID в порядке возрастания через пробел.

После того как Алиса узнала количество слов в загадочном файле, она заметила, что это число совпадает с названием другого текстового файла — ЧИСЛО.txt.
P.S. Число в названии файла равно числу, полученному в ответе на предыдущюю задачу. Например, если ответ был 123, то доступен файл 123.txt

"Как интересно!" — подумала она. "Кажется, это не случайность!"
Алиса открыла новый файл и увидела множество слов, но среди них были повторяющиеся.

"Чтобы разгадать шифр, мне нужно узнать, сколько уникальных слов в этом файле," — решила она.

Сколько уникальных слов насчитала Алиса?


P.S. Имя файла равно числу, полученному в результате решения предыдущей загадки...

Алексей, возможно, самый умный и при этом самый ленивый человек в мире. Сегодня он участвует в олимпиаде.

На олимпиаде участникам даны \(n\) задач, за правильное решение \(i\)-й задачи, участник получит \(a_i\) баллов, за неправильное решение баллов не дают. Дипломы призера дадут тем участникам, которые наберут хотя бы половину от суммарного числа баллов. Например, если на олимпиаде дано три задачи, стоимости которых в баллах равны \(1\), \(3\) и \(4\), соответственно, для получения диплома призера достаточно набрать четыре балла.

Алексей пришел на олимпиаду с целью получить диплом призера. При этом Алексей очень умен и может правильно решить любую задачу на олимпиаде. Но в то же время Алексей очень ленив и хочет решить как можно меньше задач.

Алексей настолько ленив, что даже задачи, которые он будет решать, выбирает лениво. Он хочет выбрать некоторую задачу с номером \(k\), а затем решать задачи с номерами \(k, k+1, k+2 \ldots\) до тех пор, пока ему не будет хватать баллов на диплом призера. Максимум, на что готов Алексей, это пропустить одну задачу и не решать ее, чтобы решить в итоге еще меньше задач.

Зная стратегию Алексея и информацию о задачах олимпиады, определите минимальное количество задач, которые нужно решить Алексею, чтобы получить диплом призера.

Формат входных данных
В первой строке дано одно натуральное число \(n\) — количество задач на олимпиаде (\(1 \le n \le 10^5\)).

Во второй строке заданы \(n\) чисел \(a_1, a_2, \dots a_n\) — стоимости каждой задачи в баллах (\(1 \le a_i \le 10^9\)).

Формат выходных данных
Выведите одно число — минимальное количество задач, которые может решить Алексей, придерживаясь своей стратегии, чтобы получить диплом призера.


Примечание

В первом тесте из примера для получения диплома призера необходимо набрать хотя бы четыре балла. Алексей может начать решать с третьей задачи, пропустить четвертую и набрать четыре балла, решив две задачи.

Во втором тесте достаточно решить только вторую задачу, набрав три балла.

Маша, Даша, Миша и Саша играют с числами. Каждый из них написал некоторое множество целых чисел. Затем они выполнили следующие операции. 
1) Ребята нашли разницу между Машиным и Дашиным множествами.
2) Затем, они объединили множества чисел Миши и Саши.
3) В конце, они нашли общие элементы двух множеств, полученных в результате первой и второй операции. 

Выведите на экран в порядке возрастания числа, которые получились у Маши, Даши, Миши и Саши в результате выполнения третьей операции.

Формат входных данных
Программа получает на вход четыре пары строк (всего восемь строк), в каждой паре строк первая строка содержит целое число Ni - количество чисел в i-й строке (1 <= N <= 1061 <= i <= 4), вторая строка каждой пары строк содержит множество целых чисел, разделенных одним пробелом. Во второй строке записано множество чисел Маши, во четвертой - Даши, в шестой - Миши, в восьмой - Саши. Каждое число по модулю не превышает 105.

Формат выходных данных
Выведите на экран одну строку, состоящую из целых чисел - результат выполнения третьей операции. Числа должны быть разделены одним пробелом, числа должны следовать в порядке возрастания.
✓ 133✗ 278600лёгкаяВойти и решать

Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет некоторые множества натуральных чисел. Август отвечает Беатрисе YES, если среди названных ей чисел есть задуманное или NO в противном случае. После нескольких заданных вопросов Беатриса запуталась в том, какие вопросы она задавала и какие ответы получила и просит вас помочь ей определить, какие числа мог задумать Август.


Формат входных данных

Первая строка входных данных содержит число n — наибольшее число, которое мог загадать Август. Далее идут строки, содержащие вопросы Беатрисы. Каждая строка представляет собой набор чисел, разделенных пробелами. После каждой строки с вопросом идет ответ Августа: YES или NO.

Наконец, последняя строка входных данных содержит одно слово HELP.


Формат выходных данных

Вы должны вывести (через пробел, в порядке возрастания) все числа, которые мог задумать Август.

✓ 50✗ 203900средняяВойти и решать

Паровозики стоят на железной дороге параллельно друг другу на параллельных участках пути. Условно весь участок железной дороги можно представить в виде числовой прямой. В этом случае i-й паровозик на данной числовой прямой покрывает некоторое количество заданных целых точек (от точки starti до точки endi, включая данные точки).

Определите количество целых точек на числовой прямой, которые покрыты любой частью какого-либо паровозика.

Входные данные
В первой строке записано число N - количество паровозиков на железной дороге. В следующих N строках записаны по 2 числа (starti, endi)  - тоски начала и конца i-го паровозика. 

Ограничения

1 <= N <= 100
1 <= starti <= endi <= 100


Выходные данные
Выведите ответ на задачу.
 

Примеры
Входные данные Выходные данные Примечания
1
3
3 6
1 5
4 7
7
Все точки от 1 до 7 покрыты хотя бы одним паровозиком. Поэтому ответ 7.
Даны два целочисленных массива nums1 и nums2. Выведите в первой строке в порядке возрастания все элементы первого массива, которых нет во втором массиве. Во второй строке выведите в порядке возрастания все элементы второго массива, которых нет в первом. Обратите внимание, элементы в первой строке должны быть уникальны, элементы во второй строке также должны быть уникальны.

Формат входных данных 
В первой строке записано число n - количество элементов массива nums1. Вторая строка содержит n чисел nums1i - элементы массива. Треться строка содержит число m - количество элементов массива nums2. Четвертая строка содержит m чисел nums2i - элементы массива.

Ограничения

  • 1 <= длина массива nums1 и длина массива nums2 <= 1000
  • 0 <= nums1i, nums2i <= 1000

Формат выходных данных 
Выведите результирующий массив. Все элементы должны быть выведены в одной строке через пробел.
✓ 110✗ 181400лёгкаяВойти и решать
Даны два целочисленных массива nums1 и nums2. Обновите элементы массива nums1, оставив только уникальные среди тех, которые присутствуют в массиве nums1 и в nums2, но не в обоих сразу. Выведите все уникаьлные элементы массива nums1 после обновления. Элементы должны быть выведены в порядке возрастания.

Программа не должна содержать каких-либо дополнительных массивов или других переменных, кроме указанных двух.

Входные данные
В первой строке записано число n - количество элементов массива nums1. Вторая строка содержит n чисел nums1i - элементы массива. Треться строка содержит число m - количество элементов массива nums2. Четвертая строка содержит m чисел nums2i - элементы массива.

Ограничения

  • 1 <= длина массива nums1 и длина массива nums2 <= 1000
  • 0 <= nums1i, nums2i <= 1000


Выходные данные
Выведите результирующий массив. Все элементы должны быть выведены в одной строке через пробел.
 
 
Примеры
Входные данные Выходные данные
1
3
4 9 5 
5
9 4 9 8 4
5 8
✓ 79✗ 127500лёгкаяВойти и решать
Даны два целочисленных массива nums1 и nums2. Удалите из массива nums1 элементы, которые есть в nums2. Выведите все уникальные элементы массива nums1 после удаления. Элементы должны быть выведены в порядке возрастания.

Программа не должна содержать каких-либо дополнительных массивов или других переменных, кроме указанных двух.

Входные данные
В первой строке записано число n - количество элементов массива nums1. Вторая строка содержит n чисел nums1i - элементы массива. Треться строка содержит число m - количество элементов массива nums2. Четвертая строка содержит m чисел nums2i - элементы массива.

Ограничения

  • 1 <= длина массива nums1 и длина массива nums2 <= 1000
  • 0 <= nums1i, nums2i <= 1000


Выходные данные
Выведите результирующий массив. Все элементы должны быть выведены в одной строке через пробел.
 
 
Примеры
Входные данные Выходные данные
1
3
4 9 5 
5
9 4 9 8 4
5
✓ 97✗ 159500лёгкаяВойти и решать
Даны два целочисленных массива nums1 и nums2. Сформируйте третий массив путем объединения элементов заданных двух массивов. Каждый элемент результирующего массива должен быть уникальным. Элементы должны быть выведены в порядке возрастания.

Формат входных данных 
В первой строке записано число n - количество элементов массива nums1. Вторая строка содержит n чисел nums1i - элементы массива. Треться строка содержит число m - количество элементов массива nums2. Четвертая строка содержит m чисел nums2i - элементы массива.

Ограничения

  • 1 <= длина массива nums1 и длина массива nums2 <= 1000
  • 0 <= nums1i, nums2i <= 1000

Формат выходных данных 
Выведите результирующий массив. Все элементы должны быть выведены в одной строке через пробел. 
Даны два целочисленных массива nums1 и nums2. Сформируйте третий массив путем пересечения элементов заданных двух массивов. Каждый элемент результирующего массива должен быть уникальным. Элементы должны быть выведены в порядке возрастания.

Входные данные
В первой строке записано число n - количество элементов массива nums1. Вторая строка содержит n чисел nums1i - элементы массива. Треться строка содержит число m - количество элементов массива nums2. Четвертая строка содержит m чисел nums2i - элементы массива.

Ограничения

  • 1 <= длина массива nums1 и длина массива nums2 <= 1000
  • 0 <= nums1i, nums2i <= 1000


Выходные данные
Выведите результирующий массив. Все элементы должны быть выведены в одной строке через пробел в порядке возрастания.
 
 
Примеры
Входные данные Выходные данные
1
3
4 9 5 
5
9 4 9 8 4
4 9
✓ 78✗ 116400лёгкаяВойти и решать
На дополнительных занятиях по математике у Маши, Даши и Миши 10-балльная шкала оценок. Каждый из ребят получили некоторое количество оценок. Напишите программу, которая выводит множество оценок, не встречающихся ни у одного из них.

Входные данные
На вход программе подаются оценки трех учеников, разделенные символом пробела (оценки каждого ученика на отдельной строке, оценки записаны по 10-балльной шкале: от 0 до 10).

Выходные данные 
Программа должна вывести множество оценок в порядке возрастания на одной строке, разделенных пробелами, в соответствии с условием задачи.

 

Примеры
Входные данные Выходные данные
1
1 5 4 2 5 6 6 2 3 3 5 2
2 3 5 1 2 1 2 6 7 1 1 6
1 4 6 8 8 7 0 6 0 3 8 1
9 10
✓ 117✗ 156500лёгкаяВойти и решать
Маша читает книги чаще всего в электронном виде. Сегодня она захотела узнать, сколько в книге, которую она сейчас читает, различных слов. Помогите Маше написать для этого программу.
 Словом считается последовательность непробельных символов, идущих подряд, слова разделены одним или большим числом пробелов.
Знаками препинания .,;:-?! необходимо пренебречь. Регистр написания символов не учитывается.


Входные данные
Программа получает на строку текста.

Выходные данные
Выведите количество различных слов в этой строке.
 
 
Примеры
Входные данные Выходные данные
1 This is my book! 4
2 The next day, business began to pick up. Not dramatically, but bit by bit. A sack of potatoes here... 18
✓ 76✗ 323700средняяВойти и решать
Маша, Даша и Миша собирают карточки с числами. У каждого из них уже есть по n карточек. На каждой карточке написано число, не превышающее 10. Вас интересует какие числа встречаются, но не более, чем у двоих из ребят?
Напишите программу для нахождения ответа на этот вопрос.
 

Входные данные
В первой строке записано натуральное число n - количество карточек у каждого ребенка. В каждой из трех следующих строк записаны по n неотрицательных целых чисел, не превышающих 10, разделенных пробелом. Во второй строке - числа на карточках Маши, в третьей - Даши, в четвертой - Миши.

Выходные данные
Выведите на экран одну строку - множество чисел в порядке возрастания, разделенных пробелами, которые встречаются, но не более чем у двоих из ребят.

 
Примеры
Входные данные Выходные данные
1
4
0 8 9 5 
6 7 3 7 
4 3 5 5
0 3 4 5 6 7 8 9
2
3
1 2 3
1 2 3
4 5 6
1 2 3 4 5 6
✓ 136✗ 217500лёгкаяВойти и решать
Поделиться
Класснуть