티스토리 뷰

공부

각도 정렬하기

구사과 2016. 5. 21. 21:00

sort(a, a+n, [&](const pnt &a, const pnt &b){

if((pi(a.x, a.y) > pi(0, 0)) ^ (pi(b.x, b.y) > pi(0, 0))) return pi(a.x, a.y) > pi(b.x, b.y);

if(ccw(a, b) != 0) return ccw(a, b) > 0;

return hypot(a) < hypot(b);

});

앞문제를 풀다가 발견한 코드. 1 2 3 4 사분면에 상관없이 각도정렬을 할 수 있다.

+ 5.21 업데이트. 각도가 같을 경우 거리순으로 정렬한다. (hypot(p) = p.x^2 + p.y^2, pi = make_pair)

+ 2017.8.14 업데이트. 코드 길이를 많이 줄였다.


'공부' 카테고리의 다른 글

APIO 2016  (0) 2016.05.29
Google Code Jam 2016 Round 2  (0) 2016.05.29
CEOI 2006  (0) 2016.05.17
Landscaping (US Open 2016 Platinum)  (2) 2016.05.05
Harbingers (CEOI 2009)  (4) 2016.04.28
댓글
댓글쓰기 폼
공지사항
Total
864,635
Today
107
Yesterday
495