結果

問題 No.3292 World Map Distance
ユーザー ゼット
提出日時 2025-10-03 22:37:29
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 906 bytes
コンパイル時間 383 ms
コンパイル使用メモリ 82,592 KB
実行使用メモリ 214,728 KB
最終ジャッジ日時 2025-10-03 22:37:54
合計ジャッジ時間 24,426 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 8 WA * 26
権限があれば一括ダウンロードができます

ソースコード

diff #

N,X,Y=map(int,input().split())
Lx=[]
Ly=[]
Ax=set()
Ay=set()
for i in range(N):
  x,y=map(int,input().split())
  Lx.append(x)
  Ly.append(y)
  Lx.append(x+X)
  Ly.append(y+Y)
  Lx.append(x+2*X)
  Ly.append(y+2*Y)
  Ax.add(x)
  Ay.add(y)
  Ax.add(x+X//2)
  Ax.add(x+(X+1)//2)
  Ay.add(y+Y//2)
  Ay.add(y+(Y+1)//2)
result0,result1=0,0
Lx.sort()
Ly.sort()
from bisect import bisect_right
vx=[0]*(3*N+2)
vy=[0]*(3*N+2)
for i in range(3*N):
  vx[i+1]=vx[i]+Lx[i]
  vy[i+1]=vy[i]+Ly[i]
for a in Ax:
  p=a+X
  pos=bisect_right(Lx,p+X//2)
  pos2=bisect_right(Lx,p)
  count=pos-pos2
  count2=N-count
  d=(vx[pos]-vx[pos2])-count*p
  d+=count2*p-(vx[pos2]-vx[pos-N])
  result0=max(result0,d)
for a in Ay:
  p=a+Y
  pos=bisect_right(Ly,p+X//2)
  pos2=bisect_right(Ly,p)
  count=pos-pos2
  count2=N-count
  d=(vy[pos]-vy[pos2])-count*p
  d+=count2*p-(vy[pos2]-vy[pos-N])
  result1=max(result1,d)
print(result0+result1)
0