eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Рестораны

Рестораны

Все очень рады вернуться на улицу и в рестораны Парижа. Однако пока что в ресторанах очень ограниченное количество мест. Мы хотим, чтобы оба ресторана могли принять как можно больше людей и чтобы клиенты занимали предпочитаемые ими места. Имеются $n$ клиентов с номерами от $1$ до $n$ и $m$ ресторанов с номерами от $1$ до $m$. Каждый клиент бронирует столик в определенном подмножестве ресторанов и предоставляет свой список бронирований, упорядоченный по предпочтениям. Каждый ресторан ранжирует полученные бронирования в определенном порядке предпочтения --- например, ресторан может желать, чтобы клиенты, которые зарегистрировались первыми, имели более высокий рейтинг. Каждый ресторан $i$ также имеет вместимость $c_i$, то есть максимальное количество клиентов, которое он может обслужить. Ваша задача --- найти такое распределение части посетителей в ресторанах, чтобы выполнялись следующие условия: 1. Ни один ресторан не вмещает больше посетителей, чем его вместимость. 2. Каждому клиенту предоставляется столик не более чем в одном ресторане. 3. Не существует ресторана $r$ и клиента $c$, забронировавшего столик в $r$, такого, что: \begin{itemize} \item $c$ не предоставили столик или он предпочитает $r$ ресторану, в котором ему предоставили столик, и \item в $r$ осталось несколько мест или $r$ заполнен, но предпочитает $c$ хотя бы одному из назначенных ему клиентов. \end{itemize} Другие замечания, на которые следует обратить внимание: \begin{itemize} \item Каждый клиент сделал хотя бы одно бронирование. \item Рестораны ранжируют только клиентов, сделавших у них бронь. Возможно, в ресторане нет клиентов, желающих забронировать столик. \end{itemize} \InputFile Первая строка содержит числа $n~(1 \le n \le 50000)$ и $m~(1 \le m \le 10000)$. Следующие $m$ строк описывают вместимости, причем $i$-я строка содержит целое число $c_i~(1 \le c_i \le n)$ --- вместимость ресторана $i$. Далее следуют $n$ строк. $i$-я строка описывает список резервирований для клиента $i$, отсортированный по предпочтениям: строка содержит список различных целых чисел (от $1$ до $m$), от наиболее предпочтительных до наименее предпочтительных. Далее следуют $m$ строк. $i$-я строка описывает отсортированные предпочтения ресторана $i$. Эта строка содержит либо число $0$, когда ни один клиент не забронировал столик в ресторане $i$, либо список различных целых чисел --- список клиентов, сделавших заказ в ресторане $i$, упорядоченный от наиболее к наименее предпочитаемому рестораном. . Общее количество вариантов бронирования составляет не более $10^6$. \OutputFile Выведите набор клиентов, для которых имеется возможное распределение (в соответствии с приведенными выше правилами). Набор задается по одному клиенту в отдельной строке, отсортирован по возрастанию их $id$.
Лимит времени 5 секунд
Лимит использования памяти 2048 MiB
Входные данные #1
4 4
2
2
2
1
2
2 3
2 1 3
1 2 4 3
3 4
3 2 4 1
3 4 2
4
Выходные данные #1
2
3
4
Источник 2020 ACM Southwestern Europe Regional Contest (SWERC), Paris, March 7 (2021), Problem L