結果
問題 | No.325 マンハッタン距離2 |
ユーザー |
![]() |
提出日時 | 2016-01-04 00:19:41 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 10 ms / 1,000 ms |
コード長 | 872 bytes |
コンパイル時間 | 51 ms |
コンパイル使用メモリ | 6,912 KB |
実行使用メモリ | 6,272 KB |
最終ジャッジ日時 | 2024-09-19 11:00:06 |
合計ジャッジ時間 | 1,076 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
def sumn(n): return n*(n+1)/2 x1,y1,x2,y2,d=map(int,raw_input().split()) if x1>=0: xx=[[x1,x2]] elif x2<=0:xx=[[-x2,-x1]] else:xx=[[1,-x1],[0,x2]] if y1>=0: yy=[[y1,y2]] elif y2<=0:yy=[[-y2,-y1]] else:yy=[[1,-y1],[0,y2]] ans=0 for x in xx: for y in yy: if x[0]+y[0]>d:continue if x[1]+y[1]<=d: ans+=(x[1]-x[0]+1)*(y[1]-y[0]+1) continue if x[1]+y[0] >= d: if x[0]+y[1]>=d: tx=d-y[0] ans+=sumn(tx-x[0]+1) else: tx=d-y[1] e=y[1]-y[0]+1 ans+=sumn(e)+e*(tx-x[0]) else: if x[0]+y[1]>=d: ty=d-x[1] e=x[1]-x[0]+1 ans+=sumn(e)+e*(ty-y[0]) else: tx=d-y[1] ans+=(x[1]-x[0]+1)*(y[1]-y[0]+1)-sumn(x[1]-tx) print ans