結果
問題 | No.370 道路の掃除 |
ユーザー |
![]() |
提出日時 | 2025-03-20 20:31:50 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 41 ms / 2,000 ms |
コード長 | 929 bytes |
コンパイル時間 | 284 ms |
コンパイル使用メモリ | 82,980 KB |
実行使用メモリ | 54,388 KB |
最終ジャッジ日時 | 2025-03-20 20:32:52 |
合計ジャッジ時間 | 2,677 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 34 |
ソースコード
import bisect def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx +=1 M = int(input[idx]) idx +=1 D = [] for _ in range(M): D.append(int(input[idx])) idx +=1 D.sort() p = bisect.bisect_left(D, 0) ln = p rn = M - p min_dist = float('inf') for k in range(0, N+1): m = N - k if k > ln or m > rn: continue if k ==0: # All from right R = D[p + m -1] dist = R elif m ==0: # All from left L = D[p - k] dist = abs(L) else: L = D[p -k] R = D[p + m -1] path1 = abs(L) + (R - L) path2 = R + (R - L) dist = min(path1, path2) if dist < min_dist: min_dist = dist print(min_dist) if __name__ == "__main__": main()