QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 256 MB مجموع النقاط: 100

#11099. Ketukan Kunci

الإحصائيات

Goran sedang memulihkan diri setelah operasi lutut dan bereksperimen dengan kartu pintar yang digunakan untuk menyimpan kunci kriptografi. Dalam soal ini, sebuah kunci adalah string bit sepanjang $3n$, dengan $n$ bilangan bulat positif. Bit-bit kunci diberi indeks berupa bilangan bulat $1$ hingga $3n$ dari kiri ke kanan. Bobot kunci adalah jumlah pasangan bit bertetangga yang berbeda, ditambah satu. Sebagai contoh, bobot kunci 000 adalah 1, sedangkan bobot kunci 011010100 adalah 7.

Ia menemukan bahwa ia dapat memanipulasi kunci dengan mengirimkan sentakan listrik kecil melalui rangkaian kartu pintar. Secara khusus, ia dapat melakukan operasi berikut dengan andal: pilih sembarang dua bit bertetangga pada kunci dan balikkan keduanya. Misalnya, satu operasi dapat mengubah kunci 000 menjadi 110.

Diberikan kunci sepanjang $3n$, carilah sembarang urutan yang terdiri dari paling banyak $n$ operasi untuk mengubah kunci tersebut menjadi kunci dengan bobot setidaknya $2n$. Anda dapat mengasumsikan bahwa solusi selalu ada.

Masukan

Baris pertama berisi string yang terdiri dari digit 0 dan 1, yaitu kunci awal. Panjang kunci adalah $3n$, dengan $n$ bilangan bulat positif yang memenuhi $1 \le n \le 100\,000$.

Keluaran

Baris pertama harus berisi bilangan bulat $m$ dengan $0 \le m \le n$, yaitu jumlah operasi dalam solusi Anda. Baris berikutnya harus berisi $m$ bilangan bulat $a_1,a_2,\ldots,a_m$ yang mendeskripsikan solusi Anda. Bilangan $a_k$ adalah indeks bit sebelah kiri dari dua bit yang dibalik pada langkah ke-$k$.

Jika kunci awal sudah memiliki bobot setidaknya $2n$, Anda boleh mengeluarkan hanya bilangan bulat 0.

Contoh

Masukan 1

000000000

Keluaran 1

3
2 5 6

Masukan 2

111001000111

Keluaran 2

2
3 9

Masukan 3

010101

Keluaran 3

0

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.