結果
問題 |
No.2436 Min Diff Distance
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:31:21 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,950 bytes |
コンパイル時間 | 185 ms |
コンパイル使用メモリ | 82,020 KB |
実行使用メモリ | 180,528 KB |
最終ジャッジ日時 | 2025-06-12 21:32:27 |
合計ジャッジ時間 | 13,394 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 WA * 16 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 points = [] us = [] vs = [] for _ in range(N): X = int(input[idx]) Y = int(input[idx + 1]) idx += 2 u = X + Y v = X - Y points.append((u, v)) us.append(u) vs.append(v) # Check for duplicate u and v seen = set() for u, v in points: key = (u, v) if key in seen: print(0) return seen.add(key) max_u = max(us) min_u = min(us) max_v = max(vs) min_v = min(vs) # Sort points by u and by v sorted_by_u = sorted(points, key=lambda x: x[0]) sorted_by_v = sorted(points, key=lambda x: x[1]) # Function to find minimal Chebyshev distance for each point def find_min_d(point_list, key_index): min_d_list = [float('inf')] * N for i in range(N): for j in range(max(0, i-2), min(N, i+3)): if j == i: continue u1, v1 = point_list[i] u2, v2 = point_list[j] du = abs(u1 - u2) dv = abs(v1 - v2) d = max(du, dv) if d < min_d_list[i]: min_d_list[i] = d return min_d_list min_d_u = find_min_d(sorted_by_u, 0) min_d_v = find_min_d(sorted_by_v, 1) # For each point, find the minimal d from both sorted lists min_d = [] for i in range(N): d = min(min_d_u[i], min_d_v[i]) min_d.append(d) # Now, compute the minimal P_i min_p = float('inf') for i in range(N): u_i, v_i = points[i] max_d = max(max_u - u_i, u_i - min_u, max_v - v_i, v_i - min_v) current_p = max_d - min_d[i] if current_p < min_p: min_p = current_p print(min_p) if __name__ == '__main__': main()