Trên biển có ba ngọn hải đăng không thẳng hàng. Ta coi mặt biển như một mặt phẳng toạ độ, ba ngọn hải đăng lần lượt nhận toạ độ
Trên tay bạn là một radar, có nhiệm vụ trả về ngọn hải đăng gần nhất với một vị trí
Tương tác
Đây là bài toán tương tác. Bạn sẽ không biết bất cứ thông tin gì ngoài giới hạn của các toạ độ.
Gửi truy vấn
Bạn sẽ gửi vào luồng xuất chuẩn stdout
câu hỏi có dạng
@ x y
Trong đó,
Lưu ý:
- Sau mỗi truy vấn, cần flush stdout bằng câu lệnh
cout << flush;
hoặc các câu lệnh tương đương. - Thí sinh không được gửi quá
truy vấn.
Nhận kết quả truy vấn
Bạn sẽ đọc từ luồng nhập chuẩn stdin
câu trả lời có dạng
r
Trong đó,
Gửi câu trả lời
Bạn sẽ gửi vào luồng xuất chuẩn stdout
câu trả lời có dạng
! x y
Trong đó,
Lưu ý:
- Sau lệnh trả lời, cần flush stdout bằng câu lệnh
cout << flush;
hoặc các câu lệnh tương đương.
Cách tính điểm
Kỳ thực, tác giả cũng không biết vị trí trung tâm ấy nằm ở đâu, do đó cách tính điểm của bài này sẽ dựa trên tiêu chí “cách đều” của toạ độ đáp án so với toạ độ của ba ngọn hải đăng. Cụ thể, gọi
Khi đó, chỉ số “cách đều” được tính bằng công thức
Giả sử một test có giá trị
Ví dụ
Giới hạn
Subtask
Gọi
- Subtask 1 (50%):
- Subtask 2 (25%):
- Subtask 3 (25%):
Lời giải ví dụ
#include <bits/stdc++.h>
using namespace std;
int ASK(long double x, long double y) {
cout << "@ " << x << " " << y << endl << flush;
int r; cin >> r;
return r;
}
void ANSWER(long double x, long double y) {
cout << "! " << x << " " << y << endl << flush;
exit(0);
}
int main(void) {
int nearest_to_centre = ASK(0, 0);
ANSWER(0, 0);
return 0;
}
Bình luận