結果

問題 No.325 マンハッタン距離2
コンテスト
ユーザー titia
提出日時 2026-07-06 04:19:48
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
WA  
実行時間 -
コード長 940 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 915 ms
コンパイル使用メモリ 21,412 KB
実行使用メモリ 15,868 KB
最終ジャッジ日時 2026-07-06 04:19:57
合計ジャッジ時間 4,850 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 19 WA * 5
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
input = sys.stdin.readline

x1,y1,x2,y2,d=list(map(int,input().split()))

ANS=0

X=[]

if x1<0<=x2:
    X=[(1,-x1),(0,x2)]
else:
    X=[(x1,x2)]

Y=[]
if y1<0<=y2:
    Y=[(1,-y1),(0,y2)]
else:
    Y=[(y1,y2)]

def calc(x,y,z,w):
    if x<0:
        x=-x
        y=-y

    if z<0:
        z=-z
        w=-w

    A=x+z
    B=x+w
    C=y+z
    D=y+w


    ANS=0

    if A>d:
        return 0
    if A<=d<=min(B,C):
        k=d-A+1

        ANS+=(1+(1+k-1))*k//2

        return ANS

    if min(B,C)<=d<=max(B,C):
        k=min(B,C)-A+1

        ANS+=(1+(1+k-1))*k//2

        ANS+=(d-min(B,C))*k

        return ANS
    if max(B,C)<d:
        k=min(B,C)-A+1

        ANS+=(1+(1+k-1))*k//2

        #print(ANS)

        ANS+=(max(B,C)-min(B,C))*k

        ko=min(d-max(B,C),k-1)

        ANS+=(k-1+(k-1-ko+1))*ko//2

        return ANS

        
        

    

for x,y in X:
    for z,w in Y:
        ANS+=calc(x,y,z,w)

print(ANS)
0