12054. Банк
Відправити розв'язок
Бали:
100
Time limit:
2.0s
Memory limit:
500M
Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python
\(N\) людей з ідентифікаційними номерами \(1, 2, …, N\) стоять у черзі перед банком.
Буде \(Q\) подій. Можуть статися наступні три види подій.
- 1 : касир телефонує особі з найменшим ідентифікаційним номером, яка не була викликана.
- 2 x : Людина з ідентифікаційним номером \(x\) приходить до касира вперше. (Тут касир уже викликав особу \(x\) принаймні один раз.)
- 3 : Касир знову дзвонить особі з найменшим ідентифікаційним номером, якій уже телефонували, але вона не прийшла.
Виведіть ідентифікаційні номери осіб, викликаних касиром у подіях третього роду.
Обмеження
- \(1≤N≤5×10^5\)
- \(2≤Q≤5×10^5\)
- Не буде події першого роду, якщо всі люди вже викликані хоча б один раз.
- Для кожної події другого роду особа з ідентифікаційним номером \(x\) вже була викликана касиром принаймні один раз.
- Для кожної події другого роду особа з ідентифікаційним номером \(x\) не прийде до касира більше одного разу.
- Не буде події третього роду, коли до каси прийшли всі люди, яких уже викликали.
- Є принаймні одна подія третього роду.
- Усі значення у вхідних даних є цілими числами.
Формат вхідних даних
Перший рядок містить цілі числа \(N,Q\).
Наступні \(Q\) рядків містять події \(i\).
Формат вихідних даних
У вихідний потік виведіть \(X\) рядків, де \(X\) – кількість подій третього роду.
В \(i\)-му рядку вказується ідентифікаційний номер викликаного в \(i\)-й події третього роду.
Приклад вхідних даних
4 10
1
1
3
2 1
1
2 3
3
1
2 2
3
Приклад вихідних даних
1
2
4
Для кожного \(i=1,2,…,Q\) показано нижче набір людей, яких уже викликали, але вони не прийшли безпосередньо перед \(i\)-тою подією.
- I=1 : {}
- I=2 : {1}
- I=3 : {1,2}
- I=4 : {1,2}
- I=5 : {2}
- I=6 : {2,3}
- I=7 : {2}
- I=8 : {2}
- I=9 : {2,4}
- I=10 : {4}
Події для \(i\)=3,7,10 є третього роду, тому вам слід вивести осіб із найменшими ідентифікаційними номерами в наборах для цих подій: 1,2,4.
Коментарі