Giun
Xem dạng PDFBạn đang tìm một vị trí trong đất để đặt một con giun, thú cưng của mình, Maximus. Khu vực tìm kiếm là một vùng hình hộp có kích thước ~N \times M \times K~ được chia thành lưới ba chiều gồm các ô hình lập phương. Các ô trong hộp được gắn nhãn ~(x, y, z)~, tương ứng với tọa độ của chúng ~(1 \leq x \leq N, 1 \leq y \leq M, 1 \leq z \leq K)~. Mỗi ô có độ ẩm nhất định ~H [x, y, z]~ là một số nguyên trong phạm vi ~1 ... 10^9~. Bạn có thể đo độ ẩm của bất kỳ ô nào bằng một cảm biến đặc biệt.
Maximus rất thích những nơi ẩm ướt, vì vậy bạn cần phải đưa nó vào một ô có độ ẩm ướt không thấp hơn các ô lân cận, nếu không, nó sẽ bỏ đi và bạn sẽ khó tìm thấy nó. Nói cách khác, bạn cần đặt Maximus ở ô ~(x, y, z)~, sao cho:
~H [x, y, z] \geq max (H [x + 1, y, z],\ H [x - 1, y, z],\ H [x, y + 1, z],\ H [x, y - 1, z],\ H [x, y, z + 1],\ H [x, y, z - 1])~
Trong đó, một giá trị được coi là ~0~ khi nó nằm ngoài hộp (vì Maximus muốn ở trong hộp). Tuy nhiên, số lượng ô có thể rất lớn, vì vậy bạn không thể đo độ ẩm của tất cả các ô. Do đó, bạn chỉ có thể đo một số lượng ô nhất định.
Interaction
Đầu tiên, bạn cần đọc vào bốn số nguyên ~N, M, K, Q~. Trong đó ~N, M, K~ là kích thước hình hộp và ~Q~ là số truy vấn bạn được hỏi. Sau đó bạn được phép hỏi chương trình các câu như sau:
? x y z (~1 \le x \le N~, ~1 \le y \le M~, ~1 \le z \le K~): chương trình sẽ in ra giá trị ~H[x, y, z]~, lưu ý rằng bạn không được hỏi quá ~Q~ truy vấn này.
! x y z (~1 \le x \le N~, ~1 \le y \le M~, ~1 \le z \le K~): vị trí bạn chọn cho Maximus. Lưu ý rằng bạn chỉ được trả lời một lần duy nhất và chương trình sẽ dừng lại sau đó. Câu trả lời cần thỏa mãn điều kiện đề bài.
Sau mỗi lần in lệnh, bạn phải xuống dòng và flush output, nếu không sẽ bị ~\texttt{Idleness limit exceeded}~. Để flush output, dùng:
fflush(stdout) hoặc cout.flush() với C++.
System.out.flush() với Java.
sys.stdout.flush() với Python.
std::io::stdout().flush() với Rust.
Với các ngôn ngữ khác, vui lòng tham khảo documentation.
Interactor là non-adaptive: độ ẩm không thay đổi trong suốt quá trình tương tác.
Scoring
| Subtask | Điểm | Giới hạn |
|---|---|---|
| 1 | ~10~ | ~M = K = 1, N = 1000000, Q = 10000~. |
| 2 | ~22~ | ~M = K = 1, N = 1000000, Q = 35~. |
| 3 | ~12~ | ~K = 1, N = M = 200, Q = 4000~. |
| 4 | ~19~ | ~K = 1, N = M = 1000, Q = 3500~. |
| 5 | ~14~ | ~N = M = K = 100, Q = 100000~. |
| 6 | ~23~ | ~N = M = K = 500, Q = 150000~. |
Sample Input 1
3 1 1 3
1
1
3
Sample Output 1
? 1 1 1
? 2 1 1
? 3 1 1
! 3 1 1
Notes
Quá trình tương tác giữa máy chấm và chương trình của bạn:
| Máy chấm | Chương trình của bạn |
|---|---|
| 3 1 1 3 | |
| ? 1 1 1 | |
| 1 | |
| ? 2 1 1 | |
| 1 | |
| ? 3 1 1 | |
| 3 | |
| ! 3 1 1 |

Bình luận