Trò chơi chiếc mũ

Đề bài

Mô tả

n học sinh ngồi thành một vòng tròn, đánh số từ 1 đến n theo chiều vòng tròn, trong đó n là số chẵn. Học sinh i và học sinh i+1 ngồi cạnh nhau (với 1in1), học sinh n và học sinh 1 cũng ngồi cạnh nhau.

Mỗi học sinh được phát một mảnh giấy ghi một số nguyên. Gọi ai là số của học sinh i. Cách phát thoả mãn: hai học sinh ngồi cạnh nhau luôn có số hơn kém nhau đúng 1 đơn vị, tức là |aiai+1|=1 với mọi i (tính cả cặp n1).

Học sinh i và học sinh i+n2 ngồi đối diện nhau. Hãy tìm một cặp học sinh ngồi đối diện nhau có cùng số, hoặc xác định rằng không tồn tại cặp nào như vậy.

Bạn không được biết trước dãy a. Bạn chỉ có thể hỏi giá trị của từng học sinh, và không quá 60 câu hỏi.

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 chẵn n là số học sinh.

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

  • ? i (với 1in): hỏi số của học sinh i. Hệ thống trả lời giá trị ai.
  • ! x: đưa ra đáp án và kết thúc chương trình. Nếu tồn tại cặp đối diện có cùng số thì x là chỉ số của một học sinh bất kỳ thuộc một cặp như vậy (1xn); nếu không tồn tại thì x=1.

Số câu hỏi dạng ? không được vượt quá 60. Thao tác ! x không tính vào giới hạn này. Sau khi in ! x, 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

  • 2n100000, n chẵn
  • 109ai109
  • |aiai+1|=1 với mọi i (chỉ số tính theo vòng tròn)
  • Số câu hỏi tối đa: 60

Ví dụ

Chương trình Hệ thống Giải thích
8 Hệ thống cho biết n=8. Dãy ẩn là [1,2,1,2,3,4,3,2]
? 4 2 Số của học sinh 42
? 8 2 Số của học sinh 82
! 4 Học sinh 4 và học sinh 8 ngồi đối diện và cùng có số 2
Chương trình Hệ thống Giải thích
6 Hệ thống cho biết n=6. Dãy ẩn là [1,2,3,2,1,0]
! -1 Ba cặp đối diện là (1,4), (2,5), (3,6) với các số (1,2), (2,1), (3,0), không cặp nào bằng nhau

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