第二の条件は考慮されません
Iと、すなわち、より小さな差XI-YI jはY、Xおよびその逆から選択され、式を導入することができ、XまたはYを選択し、他のすべてと最小スコアを必要とするが選択され
だから、XI-Yiに応じて並べ替えることができます
そして、ラインを引き、第二の条件を検討
/ * XI + YJ <XJ + 1 YIの XI-YI <XJ-YJの XI-YI值小取XI XIイル值大取YI * / の#include <ビット/ STDC ++ H> 使用 名前空間STDを、 #defineっ長い長 の#define N 300005 構造体ノード{ LLのX、Y、ID。 } P [N]、Q [N]。 INTのN、M。 LL ANS [N]、[N] SUMX、スミ[N]。 INT CMP(ノードA、ノードB){ 戻り AX-AY <bx- によって;} int型のmain(){ CIN >> N >> M。 以下のために(int型 i = 1 ; iは++; iが= N < ) (scanf関数を"%LLD%LLD "、&P [i]は.X、&P [I] .Y)、P [i]は.ID = 私は、 のために(int型 I = 1を iが<= N; iが++)Q [I] = P [i]は、 ソート(P + 1、P + 1 + N、CMP) するための(int型 i = 1 ; iが<= N; iが++ ){ SUMX [I] = SUMX [I- 1 ] + P [I]。 X; スミ[I] =スミ[I- 1 ] + P [i]の.Y; } ための(int型 i = 1 ; iが<= N; iが++ ){ ANS [P [I] .ID] + =(I - 1)* P [i]は.Y。 ANS [P [I] .ID] + = SUMX [I- 1 ]。 ANS [P [I] .ID] + =(NI)* P [i]は.X。 ANS [P [I] .ID] + =スミ[N] - スミ[I]。 } ながら(M-- ){ int型V、Uと、 scanf関数(" %d個の%d個"、&U&V); ノードA = Q [U]、B = Q [V]。 LL和 =分(a.x +によって、a.y + b.x)。 ANS [U] - = 合計を、 ANS [V] - = 合計。 } のための(INT I = 1私は++; iが<= N ) COUT [I] << << ANS " " 。 }