Universal Cup Judging System

Universal Cup

Límite de tiempo: 1.0 s Límite de memoria: 256 MB Puntuación total: 100 Interactivo
Estadísticas

Soal ini bersifat interaktif. Setelah mencetak setiap baris, Anda harus mengosongkan buffer keluaran (flush). Anda dapat menggunakan cout << flush di C++, System.out.flush() di Java, dan sys.stdout.flush() di Python. Anda harus mengikuti instruksi di bagian Interaksi dengan ketat; jika tidak, Anda mungkin menerima vonis seperti jawaban salah (wrong answer), batas waktu terlampaui (time limit exceeded), atau lainnya.

Karena pekerjaan di tambang sangat berat dan memakan waktu, para kurcaci memutuskan untuk mencari bantuan dalam mengotomatiskan beberapa tugas mereka. Tugas mereka saat ini adalah mengklasifikasikan $N$ mineral (diidentifikasi dengan nomor dari $1$ hingga $N$) ke dalam kelas-kelas yang berbeda. Untuk membantu hal ini, Kurcaci Pekerja telah memasang ban berjalan baru. Para kurcaci dapat menambahkan sampel mineral ke awal ban berjalan dan mengeluarkannya dari ujungnya (yaitu, mengeluarkan mineral yang ditambahkan paling awal).

Sayangnya, ban berjalan ini tidak memiliki basis pengetahuan, sehingga tidak dapat mengidentifikasi kelas mineral apa pun di atasnya. Namun, ia memiliki fitur berguna lainnya: ia menampilkan berapa banyak kelas mineral berbeda yang saat ini berada di atas ban berjalan. Ternyata ini sudah cukup untuk tambang tersebut, karena para kurcaci tidak perlu mengetahui kelas dari setiap mineral: mereka hanya perlu memisahkan mineral-mineral tersebut ke dalam tumpukan dengan kelas yang sama.

Bisakah Anda membantu para kurcaci menyelesaikan tugas ini menggunakan ban berjalan tersebut?

Interaksi

Kelas-kelas mineral sudah ditetapkan sejak awal dan tidak bergantung pada kueri yang dilakukan.

Pertama, baca satu baris yang berisi satu bilangan bulat $N$, yaitu jumlah mineral yang akan diklasifikasikan. Kemudian, Anda dapat melakukan operasi dari dua jenis berikut:

  • + id — mineral dengan pengenal id ditambahkan ke awal ban berjalan.
  • - — mineral di ujung ban berjalan dikeluarkan. Jika ban berjalan kosong, tidak ada yang terjadi.

Setelah setiap operasi, ban berjalan mengeluarkan satu baris yang berisi jumlah kelas berbeda yang saat ini berada di atasnya.

Untuk mengeluarkan jawaban, pertama-tama cetak satu baris yang berisi ! diikuti oleh $k$ yang merupakan jumlah kelas berbeda di tambang. Kemudian cetak $k$ baris, masing-masing menjelaskan satu kelas. Setiap baris harus berisi sebuah bilangan $c_i$ diikuti oleh $c_i$ pengenal mineral dari kelas tersebut. Masing-masing dari $N$ mineral harus muncul di tepat satu kelas. Anda dapat mengeluarkan kelas dan mineral di dalam setiap kelas dalam urutan apa pun.

Ingatlah untuk melakukan flush pada keluaran setelah setiap operasi dan setelah menulis jawaban. Ingatlah untuk memberi spasi antara angka dan simbol +, -, !. Anda harus membaca semua data dari interaktor.

Batasan

$1 \le N \le 500$, Anda dapat melakukan paling banyak $35\,000$ operasi.

Contoh

Masukan 1

3
1
2
2
2

Keluaran 1

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

Catatan

Pada uji contoh pertama, $N = 3$ dan kelas dari mineral $1, 2, 3$ berturut-turut adalah $1, 2, 1$.

Pengujian Lokal

Di bagian Files Anda dapat menemukan A.zip yang berisi uji contoh dan grader grader.cpp. Untuk menguji solusi Anda, kompilasi solusi tersebut, lalu berikan nama uji dan berkas eksekusi Anda ke ./grader yang telah dikompilasi:

./grader [test] [executable]

Sebagai contoh: ./grader 0b.in ./abc

Grader contoh tidak dijamin berperilaku identik dengan grader resmi. Namun, keduanya tidak bersifat adaptif.

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.