結果
問題 | No.2436 Min Diff Distance |
ユーザー |
![]() |
提出日時 | 2025-03-20 21:18:02 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,285 bytes |
コンパイル時間 | 180 ms |
コンパイル使用メモリ | 82,248 KB |
実行使用メモリ | 190,056 KB |
最終ジャッジ日時 | 2025-03-20 21:19:06 |
合計ジャッジ時間 | 4,496 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 TLE * 1 -- * 19 |
ソースコード
import sysdef main():input = sys.stdin.read().split()n = int(input[0])xs = []ys = []idx = 1for _ in range(n):x = int(input[idx])y = int(input[idx + 1])xs.append(x)ys.append(y)idx += 2s = [xs[i] + ys[i] for i in range(n)]d = [xs[i] - ys[i] for i in range(n)]max_s = max(s)min_s = min(s)max_d = max(d)min_d = min(d)# Define the four sorted lists# sorted_x is indices sorted by x, then ysorted_x = sorted(range(n), key=lambda i: (xs[i], ys[i]))sorted_y = sorted(range(n), key=lambda i: (ys[i], xs[i]))sorted_s = sorted(range(n), key=lambda i: (s[i], xs[i]))sorted_d = sorted(range(n), key=lambda i: (d[i], xs[i]))# Build position arrayspos_x = [0] * nfor idx_list, original_i in enumerate(sorted_x):pos_x[original_i] = idx_listpos_y = [0] * nfor idx_list, original_i in enumerate(sorted_y):pos_y[original_i] = idx_listpos_s = [0] * nfor idx_list, original_i in enumerate(sorted_s):pos_s[original_i] = idx_listpos_d = [0] * nfor idx_list, original_i in enumerate(sorted_d):pos_d[original_i] = idx_listk = 5min_distances = [float('inf')] * nfor i in range(n):current_min = float('inf')for sorted_list, pos in [(sorted_x, pos_x), (sorted_y, pos_y), (sorted_s, pos_s), (sorted_d, pos_d)]:p = pos[i]start = max(0, p - k)end = min(len(sorted_list) - 1, p + k)for idx in range(start, end + 1):j = sorted_list[idx]if j == i:continuecurrent_dist = abs(xs[i] - xs[j]) + abs(ys[i] - ys[j])if current_dist < current_min:current_min = current_distmin_distances[i] = current_minmin_p = float('inf')for i in range(n):a = max_s - s[i]b = s[i] - min_sc = max_d - d[i]d_i = d[i] - min_dcurrent_max = max(a, b, c, d_i)current_p = abs(current_max - min_distances[i])if current_p < min_p:min_p = current_pprint(min_p)if __name__ == '__main__':main()