1. 程式人生 > >bzoj 5099 [POI2018]Pionek 計算幾何 極角排序

bzoj 5099 [POI2018]Pionek 計算幾何 極角排序

包含 int HP 一起 www 重復 post 在一起 無限

[POI2018]Pionek

Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 269 Solved: 80
[Submit][Status][Discuss]

Description

在無限大的二維平面的原點(0,0)放置著一個棋子。你有n條可用的移動指令,每條指令可以用一個二維整數向量表 示。每條指令最多只能執行一次,但你可以隨意更改它們的執行順序。棋子可以重復經過同一個點,兩條指令的方 向向量也可能相同。你的目標是讓棋子最終離原點的歐幾裏得距離最遠,請問這個最遠距離是多少?

Input

第一行包含一個正整數n(n<=200000),表示指令條數。 接下來n行,每行兩個整數x,y(|x|,|y|<=10000),表示你可以從(a,b)移動到(a+x,b+y)。

Output

輸出一行一個整數,即最大距離的平方。

Sample Input

5
2 -2
-2 -2
0 2
3 1
-3 1

Sample Output

26

HINT

技術分享圖片

確定一個方向,然後再該方向上投影為正的都需要計算,

所以這個極角排序後即可O(n),兩個指針,這個是基本操作,這裏有個性質,方向的話需要將其及其反方向都加進去。

然後去操作一波,就是180半面上的都加在一起就可以了。

bzoj 5099 [POI2018]Pionek 計算幾何 極角排序