結果

問題 No.1998 Manhattan Restaurant
ユーザー rin204
提出日時 2022-07-01 22:32:08
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,068 bytes
コンパイル時間 416 ms
コンパイル使用メモリ 82,336 KB
実行使用メモリ 108,872 KB
最終ジャッジ日時 2024-11-26 05:53:59
合計ジャッジ時間 13,329 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 10 WA * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

n = int(input())
if n <= 2:
    print(0)
    exit()
xy = []
for _ in range(n):
    x, y = map(int, input().split())
    xy.append((x + y, x - y))
xy.sort(key=lambda x:(x[0], x[1]))
inf = 1 << 40
mi_y = inf
ma_y = -inf
X = [0] * (n - 1)
for i in range(n - 1):
    mi_y = min(mi_y, xy[i][1])
    ma_y = max(ma_y, xy[i][1])
    dy = (ma_y - mi_y)
    dx = xy[i][0] - xy[0][0]
    X[i] = max(dx, dy)

mi_y = inf
ma_y = -inf
for i in range(n - 1, 0, -1):
    mi_y = min(mi_y, xy[i][1])
    ma_y = max(ma_y, xy[i][1])
    dy = (ma_y - mi_y)
    dx = xy[-1][0] - xy[i][0]
    X[i - 1] = max(X[i - 1], dx, dy)
ans = min(X)

xy.sort(key=lambda x:(x[0], -x[1]))
inf = 1 << 40
mi_y = inf
ma_y = -inf
X = [0] * (n - 1)
for i in range(n - 1):
    mi_y = min(mi_y, xy[i][1])
    ma_y = max(ma_y, xy[i][1])
    dy = (ma_y - mi_y)
    dx = xy[i][0] - xy[0][0]
    X[i] = max(dx, dy)

mi_y = inf
ma_y = -inf
for i in range(n - 1, 0, -1):
    mi_y = min(mi_y, xy[i][1])
    ma_y = max(ma_y, xy[i][1])
    dy = (ma_y - mi_y)
    dx = xy[-1][0] - xy[i][0]
    X[i - 1] = max(X[i - 1], dx, dy)
ans = min(ans, *X)

xy.sort(key=lambda x:(x[1], x[0]))
inf = 1 << 40
mi_y = inf
ma_y = -inf
X = [0] * (n - 1)
for i in range(n - 1):
    mi_y = min(mi_y, xy[i][0])
    ma_y = max(ma_y, xy[i][0])
    dy = (ma_y - mi_y)
    dx = xy[i][1] - xy[0][1]
    X[i] = max(dx, dy)

mi_y = inf
ma_y = -inf
for i in range(n - 1, 0, -1):
    mi_y = min(mi_y, xy[i][0])
    ma_y = max(ma_y, xy[i][0])
    dy = (ma_y - mi_y)
    dx = xy[-1][1] - xy[i][1]
    X[i - 1] = max(X[i - 1], dx, dy)

ans = min(ans, *X)
xy.sort(key=lambda x:(x[1], -x[0]))
inf = 1 << 40
mi_y = inf
ma_y = -inf
X = [0] * (n - 1)
for i in range(n - 1):
    mi_y = min(mi_y, xy[i][0])
    ma_y = max(ma_y, xy[i][0])
    dy = (ma_y - mi_y)
    dx = xy[i][1] - xy[0][1]
    X[i] = max(dx, dy)

mi_y = inf
ma_y = -inf
for i in range(n - 1, 0, -1):
    mi_y = min(mi_y, xy[i][0])
    ma_y = max(ma_y, xy[i][0])
    dy = (ma_y - mi_y)
    dx = xy[-1][1] - xy[i][1]
    X[i - 1] = max(X[i - 1], dx, dy)

ans = min(ans, *X)
print(ans // 2)


    
0