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

Không có ý kiến tại thời điểm này.