Khoảng cách góc nhỏ nhất
Xem dưới dạng PDF
Gửi bài giải
Điểm:
20
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Mai có một tập hợp \(n\) điểm trên mặt phẳng. Mai muốn tìm hai điểm phân biệt trong tập hợp sao cho góc giữa hai vector nối từ gốc toạ độ đến chúng là nhỏ nhất.
Nói cách khác, hãy tìm cặp điểm \((P_i, P_j)\) (\(i \neq j\)) sao cho góc giữa hai vector \(\overrightarrow{OP_i}\) và \(\overrightarrow{OP_j}\) là nhỏ nhất.
Định dạng đầu vào
- Dòng đầu chứa số nguyên \(n\) (\(2 \le n \le 10^5\)).
- \(n\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(x_i, y_i\) (\(|x_i|, |y_i| \le 10^6\)). Không có điểm nào trùng với gốc toạ độ.
Định dạng đầu ra
- In ra một số thực là góc nhỏ nhất tìm được (đơn vị độ, sai số tuyệt đối không quá \(10^{-4}\)), làm tròn đến \(6\) chữ số thập phân.
Ví dụ
Input:
3
1 0
0 1
-1 0
Output:
90.000000
Giải thích: Góc giữa \((1,0)\) và \((0,1)\) là \(90^\circ\), giữa \((1,0)\) và \((-1,0)\) là \(180^\circ\), giữa \((0,1)\) và \((-1,0)\) là \(90^\circ\). Giá trị nhỏ nhất là \(90^\circ\).
Ràng buộc
- Subtask 1 (20 điểm): \(n \le 100\).
- Subtask 2 (30 điểm): \(n \le 10^4\).
- Subtask 3 (50 điểm): \(n \le 10^5\).
Nhận xét