Gửi bài giải


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

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạ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

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.