CSES - Permuted Binary Strings | Xâu Nhị Phân Bị Hoán Vị

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Có một hoán vị ẩn \(a_1, a_2,\dots, a_n\) của các số nguyên \(1, 2,\dots, n\). Nhiệm vụ của bạn là tìm hoán vị này.

Để làm điều đó, bạn có thể đặt câu hỏi: bạn chọn một xâu nhị phân \(b_1b_2\dots b_n\) và sẽ nhận lại xâu nhị phân \(b_{a_1}b_{a_2}\dots b_{a_n}\).

Interaction

Đây là một bài toán tương tác. Chương trình của bạn sẽ tương tác với trình chấm bằng chuẩn vào và chuẩn ra. Bạn cần bắt đầu bằng cách đọc một số nguyên \(n\): độ dài của hoán vị.

Ở lượt của mình, bạn có thể in một trong các dạng sau:

  • "\(?\ b_1b_2\dots b_n\)", với \(b_i\in\{0, 1\}\): trình chấm sẽ trả về xâu nhị phân \(b_{a_1}b_{a_2}\dots b_{a_n}\).

  • "\(!\ a_1\ a_2 \dots a_n\)": thông báo rằng hoán vị ẩn là \(a_1, a_2,\dots, a_n\). Chương trình của bạn phải kết thúc sau đó.

Mỗi dòng cần được theo sau bởi một ký tự xuống dòng. Bạn phải đảm bảo dữ liệu được flush sau khi in mỗi dòng.

Constraints

  • \(1 \le n \le 1000\)

  • bạn được hỏi tối đa \(10\) câu hỏi loại \(?\).

Example

3
? 100
100
? 010
001
? 001
010
! 1 3 2

Giải thích: Hoán vị ẩn là \([1, 3, 2]\). Trong câu hỏi đầu tiên, \(b_1b_2b_3 = 100\) và trình chấm trả về \(b_{a_1}b_{a_2}b_{a_3} = b_1b_3b_2 = 100\). Trong câu hỏi thứ hai, \(b_1b_2b_3 = 010\) và trình chấm trả về \(b_1b_3b_2 = 001\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.