DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

Yet Another Angular Sort Problem

返回题目

题解

두 점 Ai,AjA_i,A_jAi​,Aj​를 잇는 직선이 ℓ\ellℓ과 만날 때 두 점의 각도 순서가 서로 바뀐다. 두 직선이 평행하지 않다면 이런 변화는 정확히 한 번 일어나고, 순열에서는 두 번호 i,ji,ji,j가 맞바뀌므로 변화량에 2∣i−j∣2|i-j|2∣i−j∣를 더한다. 두 점을 잇는 직선이 ℓ\ellℓ과 평행하면 변화가 일어나지 않는다.

모든 쌍에 대한 2∣i−j∣2|i-j|2∣i−j∣의 합은

N(N−1)(N+1)3\frac{N(N-1)(N+1)}{3}3N(N−1)(N+1)​

이다. Ai=(xi,yi)A_i=(x_i,y_i)Ai​=(xi​,yi​)에 대해 라 두면, 가 과 평행할 필요충분조건은 이다. 같은 를 갖는 인덱스들을 정렬해 그 안의 합을 전체 합에서 빼면 된다. 시간 복잡도는 이다.

vi=axi+byiv_i=ax_i+by_i
vi​=axi​+byi​
AiAjA_iA_jAi​Aj​
ℓ\ellℓ
vi=vjv_i=v_jvi​=vj​
viv_ivi​
2∣i−j∣2|i-j|2∣i−j∣
O(Nlog⁡N)O(N\log N)O(NlogN)