結果

問題 No.3664 Manhattan Circumcenter
コンテスト
ユーザー detteiuu
提出日時 2026-08-30 16:23:21
言語 PyPy3
(7.3.23)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 2,006 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 243 ms
コンパイル使用メモリ 96,108 KB
実行使用メモリ 79,360 KB
最終ジャッジ日時 2026-08-30 16:23:29
合計ジャッジ時間 6,345 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 31 WA * 26
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

direction = [(-1, -1, 0, 0), (0, -1, 1, 0), (-1, 0, 0, 1), (0, 0, 1, 1)]

PX, PY = map(int, input().split())
QX, QY = map(int, input().split())
RX, RY = map(int, input().split())

PX, PY = PX+PY, PX-PY
QX, QY = QX+QY, QX-QY
RX, RY = RX+RY, RX-RY

# 四角の範囲内か
def judge(x, y, leftX, leftY, rightX, rightY):
    return leftX < x < rightX and leftY < y < rightY

def func(PX, PY, QX, QY, RX, RY, leftX, leftY, rightX, rightY):
    return judge(PX, PY, leftX, leftY, rightX, rightY) or judge(QX, QY, leftX, leftY, rightX, rightY) or judge(RX, RY, leftX, leftY, rightX, rightY)

leftX, leftY = min(PX, QX, RX), min(PY, QY, RY)
rightX, rightY = max(PX, QX, RX), max(PY, QY, RY)

if func(PX, PY, QX, QY, RX, RY, leftX, leftY, rightX, rightY):
    exit(print(0))

for a, b, c, d in direction:
    if not func(PX, PY, QX, QY, RX, RY, leftX+a, leftY+b, rightX+c, rightY+d):
        exit(print(-1))

diffX = rightX-leftX
diffY = rightY-leftY
ans = set()
if diffX > diffY:
    if diffX%2 == 0:
        diff = diffX-diffY
        if not func(PX, PY, QX, QY, RX, RY, leftX, leftY-diff, rightX, rightY):
            x, y = (leftX+rightX)//2, (leftY-diff+rightY)//2
            ans.add((x, y))
        if not func(PX, PY, QX, QY, RX, RY, leftX, leftY, rightX, rightY+diff):
            x, y = (leftX+rightX)//2, (leftY+rightY+diff)//2
            ans.add((x, y))
elif diffX < diffY:
    if diffY%2 == 0:
        diff = diffY-diffX
        if not func(PX, PY, QX, QY, RX, RY, leftX-diff, leftY, rightX, rightY):
            x, y = (leftX-diff+rightX)//2, (leftY+rightY)//2
            ans.add((x, y))
        if not func(PX, PY, QX, QY, RX, RY, leftX, leftY, rightX+diff, rightY):
            x, y = (leftX+rightX+diff)//2, (leftY+rightY)//2
            ans.add((x, y))
else:
    if diffX%2 == 0:
        ans.add(((rightX-leftX)//2, (rightY-leftY)//2))

ans2 = []
for x, y in ans:
    a = y
    c = (x-a)//2
    a += c
    b = c
    ans2.append((a, b))

print(len(ans))
for x, y in sorted(ans2):
    print(x, y)
0