結果
| 問題 | No.325 マンハッタン距離2 |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-07-06 04:21:56 |
| 言語 | Python3 (3.14.3 + numpy 2.4.4 + scipy 1.17.1) |
| 結果 |
AC
|
| 実行時間 | 105 ms / 1,000 ms |
| コード長 | 924 bytes |
| 記録 | |
| コンパイル時間 | 562 ms |
| コンパイル使用メモリ | 21,540 KB |
| 実行使用メモリ | 15,868 KB |
| 最終ジャッジ日時 | 2026-07-06 04:22:07 |
| 合計ジャッジ時間 | 4,762 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 24 |
ソースコード
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,y=-y,-x
if z<0:
z,w=-w,-z
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)
titia