티스토리 뷰
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 업데이트. 코드 길이를 많이 줄였다.
'공부 > Problem solving' 카테고리의 다른 글
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
- Today
- Yesterday