SQRT Contest #04 - Tìm hoán vị

Xem dạng PDF

Gửi bài giải

Điểm: 21,00 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Đây là bài toán tương tác với máy chấm

Máy tính đang có một hoán vị có ~n~ phần tử ~a_1, a_2, ..., a_n~. Nhiệm vụ của bạn cần phải đoán ra hoán vị đó. Bạn được phép hỏi máy tính các câu hỏi thuộc một trong hai dạng sau:

  • Dạng 1 - D x y z: Kiểm tra xem ~|a_x - a_y|~ có chia hết cho ~z~ không. Máy tính sẽ trả về True nếu ~|a_x - a_y|~ chia hết cho ~z~, và False trong trường hợp ngược lại.
  • Dạng 2 - C x y: Kiểm tra xem ~a_x~ có bé hơn ~a_y~ hay không. Máy tính sẽ trả về True nếu ~a_x < a_y~ và False trong trường hợp ngược lại.

Bạn được sử dụng thao tác dạng 1 không quá ~40000~ lần và thao tác dạng 2 không quá ~20~ lần để đạt điểm tối đa. Bạn có thể nhận được điểm một phần nếu dùng thao tác loại 2 không quá ~Q~ lần với ~Q > 20~.

Tương tác

  • Đầu tiên chương trình của bạn cần nhập vào một số nguyên dương ~n~ ~(1 \le n \le 1000)~.
  • Tiếp theo chương trình của bạn được phép tương tác với máy chấm. Chương trình của bạn cần in ra truy vấn cho máy chấm theo một trong ba dạng sau:
    • ~D\ x\ y\ z~ ~(1 \le x, y, z \le n)~: Đặt câu hỏi dạng 1 với bộ số ~(x, y, z)~.
    • ~C\ x\ y~ ~(1 \le x, y \le n)~: Đặt câu hỏi dạng 2 với bộ số ~(x, y)~.
    • ~A\ a_1\ a_2\ ...\ a_n~ ~(1 \le a_i \le n, a_i~ đôi một phân biệt~)~: Đoán hoán vị cần tìm là ~(a_1, a_2, ..., a_n)~.
  • Sau khi đặt câu hỏi, chương trình của bạn cần nhập vào một xâu ký tự là True hoặc False là câu trả lời của máy tính. Sau khi thực hiện thao tác đoán, chương trình của bạn cần kết thúc ngay lập tức.

Chấm điểm

Điểm của toàn bộ bài làm là điểm nhỏ nhất trong toàn bộ các test.

Giả sử điểm mỗi test tối đa là ~100~. Bạn sẽ nhận được ~0~ điểm nếu thuộc một trong hai trường hợp sau:

  • Bạn đoán sai hoán vị cần tìm.
  • Bạn sử dụng một trong hai loại câu hỏi quá ~40000~ lần.

Bạn sẽ nhận được các mốc điểm tương ứng theo bảng điểm dưới đây với mỗi ~Q~.

Điều kiện Điểm
~Q \le 20~ ~100~
~Q \le 500~ ~85~
~Q \le 1000~ ~70~
~Q \le 2000~ ~55~
~Q \le 9000~ ~40~
~Q \le 20000~ ~25~
~Q \le 40000~ ~10~

Subtask

Điểm Ràng buộc bổ sung
~20~ ~n \le 45~
~80~ Không có giới hạn gì thêm

Ví dụ

Chương trình Máy chấm Giải thích
3 Bạn cần đoán một hoán vị có ~3~ phần tử. Trong trường hợp thử nghiệm này, bạn cần đoán hoán vị ~(1, 2, 3)~
C 1 2 Bạn hỏi xem ~a_1~ có bé hơn ~a_2~ không
True Do ~1 < 2~ nên máy chấm trả về True
D 1 3 2 Bạn hỏi xem ~|a_1 - a_3|~ có chia hết cho ~2~ không
True Do ~|1 - 3| = 2~ chia hết cho ~2~ nên máy chấm trả về True
A 1 2 3 Bạn đoán chính xác hoán vị cần tìm

Trong tương tác mẫu này, bạn sử dụng ~1~ câu hỏi dạng 1 và ~1~ câu hỏi dạng 2. Do đó bạn được ~100~ điểm.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.