結果

問題 No.3438 [Cherry 8th Tune D] 競プロは向いてない
コンテスト
ユーザー kidodesu
提出日時 2026-01-23 23:36:27
言語 PyPy3
(7.3.17)
結果
WA  
実行時間 -
コード長 1,108 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 282 ms
コンパイル使用メモリ 82,944 KB
実行使用メモリ 151,560 KB
最終ジャッジ日時 2026-01-23 23:37:46
合計ジャッジ時間 66,993 ms
ジャッジサーバーID
(参考情報)
judge6 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 1
other AC * 4 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def cross3(a, b, c):
    return (b[0]-a[0])*(c[1]-a[1]) - (b[1]-a[1])*(c[0]-a[0])

# ps = [(x, y), ...]: ソートされた座標list
def convex_hull(ps):
    qs = []
    N = len(ps)
    for p in ps:
        # 一直線上で高々2点にする場合は ">=" にする
        while len(qs) > 1 and cross3(qs[-1], qs[-2], p) >= 0:
            qs.pop()
        qs.append(p)
    t = len(qs)
    for i in range(N-2, -1, -1):
        p = ps[i]
        while len(qs) > t and cross3(qs[-1], qs[-2], p) >= 0:
            qs.pop()
        qs.append(p)
    return qs

inf = 2*10**9
from math import gcd

for _ in range(int(input())):
    n = int(input())
    XY = [list(map(int, input().split())) for _ in range(n)]
    D = {(x, y): i for i, (x, y) in enumerate(XY)}
    XY.sort()
    XY_ = convex_hull(XY)[:-1]
    Ans = [-1 for _ in range(n)]
    for i in range(len(XY_)):
        x0, y0 = XY_[i-1]
        x1, y1 = XY_[i]
        x2, y2 = XY_[(i+1)%len(XY_)]
        Ans[D[(x1, y1)]] = (2*x1-x0-x2, 2*y1-y0-y2)
    for ans in Ans:
        if ans == -1:
            print("No")
        else:
            print(*ans)
0