結果
| 問題 | No.325 マンハッタン距離2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-08-28 23:08:04 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 586 bytes |
| コンパイル時間 | 65 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,416 KB |
| 最終ジャッジ日時 | 2024-11-06 08:38:37 |
| 合計ジャッジ時間 | 3,637 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 11 WA * 13 |
コンパイルメッセージ
Syntax OK
ソースコード
def solve(x1,y1,x2,y2,d)
#p [x1,y1,x2,y2,d]
return solve(-x2,y1,-x1,y2,d) if x1 < 0 && x2 < 0
return solve(x1,-y2,x2,-y1,d) if y1 < 0 && y2 < 0
return solve(0,y1,x2,y2,d)+solve(1,y1,-x1,y2,d-1) if x1 < 0
return solve(x1,0,x2,y2,d)+solve(x1,0,x2,-y1,d-1) if y1 < 0
def calc(d); (d+1)*(d+2)/2; end
return 0 if x1+y1 > d
d -= x1+y1
x2-=x1
y2-=y1
z = calc(d)
z -= calc(d-y2-1) if d>y2
z -= calc(d-x2-1) if d>x2
z += calc(d-y2-x2-1) if d>y2+x2
z
end
while cin = gets
p solve(*(cin.split.map(&:to_i)))
end