結果
| 問題 | No.325 マンハッタン距離2 |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-07-06 04:17:51 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 914 bytes |
| 記録 | |
| コンパイル時間 | 555 ms |
| コンパイル使用メモリ | 95,972 KB |
| 実行使用メモリ | 79,220 KB |
| 最終ジャッジ日時 | 2026-07-06 04:17:59 |
| 合計ジャッジ時間 | 3,513 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 WA * 12 |
ソースコード
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
ANS+=(max(B,C)-min(B,C))*k
ko=min(d-max(B,C),k-1)
ANS+=(k+(k-ko+1))*ko//2
return ANS
for x,y in X:
for z,w in Y:
ANS+=calc(x,y,z,w)
print(ANS)
titia