結果
| 問題 | No.3664 Manhattan Circumcenter |
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2026-08-30 16:28:39 |
| 言語 | PyPy3 (7.3.23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,037 bytes |
| 記録 | |
| コンパイル時間 | 266 ms |
| コンパイル使用メモリ | 95,856 KB |
| 実行使用メモリ | 79,360 KB |
| 最終ジャッジ日時 | 2026-08-30 16:28:51 |
| 合計ジャッジ時間 | 6,481 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 WA * 26 |
ソースコード
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:
if (x+y)%2 != 0: continue
a = y
c = (x-a)//2
a += c
b = c
ans2.append((a, b))
print(len(ans2))
for x, y in sorted(ans2):
print(x, y)
detteiuu