Universal Cup Judging System

Universal Cup

Limite de temps : 1.0 s Limite de mémoire : 256 MB Points totaux : 100 Interactif
Statistiques

Це інтерактивна задача. Після виведення кожного рядка необхідно скидати буфер виведення (flush). Ви можете використовувати cout << flush у C++, System.out.flush() у Java та sys.stdout.flush() у Python. Ви повинні суворо дотримуватися інструкцій у розділі «Протокол взаємодії», інакше ви можете отримати вердикт «неправильна відповідь» (wrong answer), «перевищено ліміт часу» (time limit exceeded) або інший.

Оскільки робота в шахті важка і забирає багато часу, гноми вирішили звернутися по допомогу для автоматизації деяких своїх завдань. Їхнє поточне завдання — розподілити $N$ мінералів (пронумерованих від $1$ до $N$) за різними класами. Щоб допомогти з цим, Гном-Робітник встановив новий конвеєр. Гноми можуть додавати зразки мінералів на початок стрічки конвеєра та знімати їх з її кінця (тобто знімати ті мінерали, які були додані найраніше).

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

Чи можете ви допомогти гномам розв'язати це завдання за допомогою конвеєра?

Протокол взаємодії

Класи мінералів зафіксовані на початку і не залежать від зроблених запитів.

Спочатку зчитайте рядок, що містить одне ціле число $N$ — кількість мінералів для класифікації. Потім ви можете виконувати операції таких двох типів:

  • + id — мінерал з ідентифікатором id додається на початок конвеєрної стрічки.
  • - — мінерал з кінця конвеєрної стрічки знімається. Якщо стрічка порожня, нічого не відбувається.

Після кожної операції конвеєр виводить один рядок, що містить кількість різних класів, які перебувають на ньому в даний момент.

Щоб вивести відповідь, спочатку виведіть рядок, що містить символ !, за яким іде $k$ — кількість різних класів у шахті. Потім виведіть $k$ рядків, кожен з яких описує один клас. Кожен рядок повинен містити число $c_i$, за яким ідуть $c_i$ ідентифікаторів мінералів цього класу. Кожен із $N$ мінералів повинен з'явитися рівно в одному класі. Ви можете виводити класи та мінерали всередині кожного класу в довільному порядку.

Не забувайте скидати буфер виведення після кожної операції та після виведення відповіді. Не забувайте ставити пробіли між числами та символами +, -, !. Ви повинні зчитати всі дані від інтерактора.

Обмеження

$1 \le N \le 500$, ви можете виконати не більше $35\,000$ операцій.

Приклади

Вхідні дані 1

3
1
2
2
2

Вихідні дані 1

+ 1
+ 2
+ 3
-
! 2
2 1 3
1 2

Примітка

У першому прикладі $N = 3$, а класи мінералів $1, 2, 3$ дорівнюють $1, 2, 1$ відповідно.

Локальне тестування

У розділі Files ви можете знайти архів A.zip, що містить приклади тестів та грейдер grader.cpp. Щоб протестувати своє рішення, скомпілюйте його, а потім передайте ім'я тесту та ваш виконуваний файл скомпільованому ./grader:

./grader [test] [executable]

Наприклад: ./grader 0b.in ./abc

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

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.