QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 256 MB 總分: 100

#11099. Gõ khóa

统计

Goran đang hồi phục sau ca phẫu thuật đầu gối và thử nghiệm một thẻ thông minh dùng để lưu trữ các khóa mật mã. Trong bài toán này, một khóa là một xâu bit có độ dài $3n$, trong đó $n$ là một số nguyên dương. Các bit của khóa được đánh số từ $1$ đến $3n$ từ trái sang phải. Trọng số của một khóa là số cặp bit kề nhau khác nhau cộng thêm một. Ví dụ, trọng số của khóa 000 là $1$, còn trọng số của khóa 011010100 là $7$.

Anh phát hiện rằng có thể can thiệp vào khóa bằng cách truyền những xung điện nhỏ qua các mạch của thẻ thông minh. Cụ thể, anh có thể thực hiện một cách đáng tin cậy thao tác sau: chọn hai bit kề nhau bất kỳ của khóa và đảo cả hai bit đó. Ví dụ, một thao tác có thể biến khóa 000 thành 110.

Cho một khóa có độ dài $3n$, hãy tìm một dãy bất kỳ gồm nhiều nhất $n$ thao tác biến khóa đã cho thành một khóa có trọng số ít nhất $2n$. Bạn có thể giả sử luôn tồn tại lời giải.

Dữ liệu vào

Dòng đầu tiên chứa một xâu gồm các chữ số 0 và 1 — khóa ban đầu. Độ dài của khóa là $3n$, trong đó $n$ là một số nguyên dương thỏa mãn $1\le n\le 100\,000$.

Dữ liệu ra

Dòng đầu tiên phải chứa một số nguyên $m$, với $0\le m\le n$ — số thao tác trong lời giải của bạn. Dòng tiếp theo phải chứa $m$ số nguyên $a_1,a_2,\ldots,a_m$ mô tả lời giải. Số $a_k$ là chỉ số của bit bên trái trong hai bit được đảo ở bước thứ $k$.

Nếu khóa ban đầu đã có trọng số ít nhất $2n$, bạn có thể chỉ in số nguyên 0.

Ví dụ

Dữ liệu vào 1

000000000

Dữ liệu ra 1

3
2 5 6

Dữ liệu vào 2

111001000111

Dữ liệu ra 2

2
3 9

Dữ liệu vào 3

010101

Dữ liệu ra 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.