trang chủ / bài tập / omkarlife

Omkar và ý nghĩa cuộc sống

Đề bài

Mô tả

Có một hoán vị ẩn p1,p2,,pn của các số nguyên 1,2,,n. Bạn không biết hoán vị này và phải tìm ra nó bằng các câu hỏi.

Một câu hỏi là một dãy a1,a2,,an gồm n số nguyên, mỗi số nằm trong đoạn [1,n]. Dãy a không bắt buộc phải là hoán vị, các phần tử có thể trùng nhau.

Với câu hỏi đó, hệ thống tính dãy tổng sj=pj+aj với mọi j=1,2,,n, rồi trả lời bằng chỉ số nhỏ nhất k sao cho giá trị sk xuất hiện nhiều hơn một lần trong dãy s. Nếu mọi phần tử của s đều đôi một khác nhau, hệ thống trả lời 0.

Bạn được phép hỏi không quá 2n câu hỏi. Hãy tìm hoán vị p.

Giao thức tương tác

Đây là bài toán tương tác. Chương trình của bạn giao tiếp với hệ thống chấm qua đầu vào/ra chuẩn.

Đầu tiên, chương trình đọc số nguyên n là độ dài hoán vị.

Sau đó bạn có thể thực hiện hai loại thao tác:

  • ? a_1 a_2 ... a_n (với 1ajn): đặt một câu hỏi. Hệ thống trả lời số nguyên k như mô tả ở trên (0kn).
  • ! p_1 p_2 ... p_n: đưa ra đáp án và kết thúc chương trình.

Số câu hỏi dạng ? không được vượt quá 2n. Thao tác ! không tính vào giới hạn này. Sau khi in đáp án, chương trình phải dừng ngay lập tức.

Quan trọng: sau mỗi lần in ra, bạn phải flush output:

  • C++: cout << endl; hoặc cout.flush();
  • Python: print(..., flush=True)

Ràng buộc

  • 2n100
  • p là một hoán vị của 1,2,,n
  • 1ajn với mọi câu hỏi
  • Số câu hỏi tối đa: 2n

Ví dụ

Chương trình Hệ thống Giải thích
5 Hệ thống cho biết n=5. Hoán vị ẩn là [3,2,1,5,4]
? 4 4 2 3 2 2 s=[7,6,3,8,6]. Chỉ có giá trị 6 lặp lại, nó xuất hiện lần đầu ở vị trí 2
? 3 5 1 5 5 0 s=[6,7,2,10,9], mọi giá trị đôi một khác nhau
? 5 2 4 3 1 1 s=[8,4,5,8,5]. Cả 58 đều lặp lại; 8 xuất hiện lần đầu ở vị trí 1, 5 ở vị trí 3, nên đáp án là 1
! 3 2 1 5 4 Đưa ra hoán vị ẩn
Chương trình Hệ thống Giải thích
2 Hệ thống cho biết n=2. Hoán vị ẩn là [2,1]
? 2 1 0 s=[4,2], hai giá trị khác nhau
? 1 2 1 s=[3,3], giá trị 3 lặp lại, xuất hiện lần đầu ở vị trí 1
! 2 1 Đưa ra hoán vị ẩn

Ba câu hỏi ở ví dụ đầu chỉ nhằm minh hoạ cách tương tác, chúng không tạo thành một chiến lược đúng để xác định hoán vị.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0