Trò chơi chiếc mũ
Đề bài
Mô tả
Có học sinh ngồi thành một vòng tròn, đánh số từ đến theo chiều vòng tròn, trong đó là số chẵn. Học sinh và học sinh ngồi cạnh nhau (với ), học sinh và học sinh 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 là số của học sinh . 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 đơn vị, tức là với mọi (tính cả cặp và ).
Học sinh và học sinh 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 . Bạn chỉ có thể hỏi giá trị của từng học sinh, và không quá 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 là số học sinh.
Sau đó bạn có thể thực hiện hai loại thao tác:
? i(với ): hỏi số của học sinh . Hệ thống trả lời giá trị .! 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ì là chỉ số của một học sinh bất kỳ thuộc một cặp như vậy (); nếu không tồn tại thì .
Số câu hỏi dạng ? không được vượt quá . 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ặccout.flush(); - Python:
print(..., flush=True)
Ràng buộc
- , chẵn
- với mọi (chỉ số tính theo vòng tròn)
- Số câu hỏi tối đa:
Ví dụ
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 8 | Hệ thống cho biết . Dãy ẩn là | |
| ? 4 | 2 | Số của học sinh là |
| ? 8 | 2 | Số của học sinh là |
| ! 4 | Học sinh và học sinh ngồi đối diện và cùng có số |
| Chương trình | Hệ thống | Giải thích |
|---|---|---|
| 6 | Hệ thống cho biết . Dãy ẩn là | |
| ! -1 | Ba cặp đối diện là , , với các số , , , không cặp nào bằng nhau |
Bình luận