CSES - Hidden Permutation | Hoán Vị Ẩn

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: 3.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 này, bạn có thể đặt câu hỏi: bạn chọn hai chỉ số \(i\)\(j\) và sẽ được cho biết liệu \(a_i < a_j\) hay không.

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 qua đầu vào và đầu ra chuẩn. Bạn nê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:

  • "\(?\ i\ j\)", với \(1 \le i, j \le n\): hỏi liệu \(a_i < a_j\) hay không. Trình chấm sẽ trả về YES nếu \(a_i < a_j\)NO nếu không.

  • "\(!\ a_1\ a_2 \dots a_n\)": 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 phải được theo sau bởi ký tự xuống dòng. Bạn phải đảm bảo đầu ra được flush sau khi in mỗi dòng.

Constraints

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

  • bạn có thể hỏi nhiều nhất \(10^4\) câu hỏi loại \(?\)

Example

3
? 3 2
NO
? 3 1
YES
! 3 1 2

Giải thích: Hoán vị ẩn là \([3, 1, 2]\). Câu hỏi đầu tiên hỏi liệu \(a_3 < a_2\) hay không, điều này là sai, nên câu trả lời là NO. Câu hỏi thứ hai hỏi liệu \(a_3 < a_1\) hay không, điều này là đúng, nên câu trả lời là YES.

Bình luận

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

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