Cho N điểm trên mặt phẳng. Điểm thứ i có tọa độ nguyên (xi,yi). Hai điểm ở hai chỉ số khác nhau vẫn có thể nằm cùng một tọa độ.
Khoảng cách Euclid bình phương giữa hai điểm i và j là
(xi−xj)2+(yi−yj)2.
Hãy tìm giá trị nhỏ nhất của biểu thức trên với mọi cặp i<j. Bạn chỉ cần in bình phương khoảng cách, không lấy căn bậc hai.
Input
Dòng đầu chứa số nguyên N.
N dòng tiếp theo, mỗi dòng chứa hai số nguyên xi,yi.
Output
In một số nguyên: bình phương khoảng cách nhỏ nhất giữa hai điểm khác chỉ số.
Constraints
2≤N≤105.
−104≤xi,yi≤104.
Các cặp tọa độ có thể trùng nhau.
Scoring
Subtask 1 (50 điểm): N≤500.
Subtask 2 (50 điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
5
0 0
3 4
1 1
9 9
1 4
Output
2
Giải thích: Hai điểm (0,0) và (1,1) có bình phương khoảng cách 12+12=2. Mọi cặp khác đều có giá trị không nhỏ hơn 2.
Lời giải tóm tắt
Ý tưởng: Sắp điểm theo hoành độ rồi chia ở vị trí giữa. Mỗi lời gọi trả khoảng cách tốt nhất trong đoạn và đồng thời sắp đoạn đó theo tung độ.
Ý tưởng: Sau khi giải hai nửa, đặt d là đáp án nhỏ hơn. Một cặp cắt qua đường chia chỉ có thể tốt hơn d nếu cả hai đầu cách đường chia ít hơn d. Vì thế chỉ giữ các điểm trong dải này. Dải đã tăng theo tung độ; với mỗi điểm, chỉ cần xét các điểm đứng sau cho tới khi bình phương chênh lệch tung độ đạt d.
Chứng minh tính đúng đắn: Theo quy nạp, hai lời gọi con tìm đúng mọi cặp nằm cùng phía. Xét một cặp tốt hơn d có hai đầu khác phía. Nếu một đầu cách đường chia ít nhất d, riêng chênh lệch hoành độ đã tạo bình phương khoảng cách ít nhất d, mâu thuẫn. Do đó cả hai đầu đều vào dải. Chênh lệch tung độ của cặp cũng nhỏ hơn d, nên vòng quét sẽ xét cặp ấy trước khi dừng. Thuật toán lấy min của mọi cặp cùng phía và mọi ứng viên chéo, nên đáp án đúng.
Độ phức tạp: Thời gian O(NlogN), bộ nhớ phụ O(N) và ngăn xếp O(logN).