PythonでJOI難易度6を埋める #4

難易度6,初自力AC

B - ピザ

お店の住所の配列に,配達先の住所の要素を挿入する.ここで,お店の住所の配列がsortされているなら,二分探索で挿入先のindexを調べることができる.indexが分かったら,左右どちらのお店が近いかを調べる.

from bisect import bisect_left

d = int(input())
n = int(input())
m = int(input())
stores = [int(input()) for _ in range(n - 1)]
deliver = [int(input()) for _ in range(m)]

stores.append(0) #本店の住所
stores.append(d) #本店の住所
stores.sort()
deliver.sort()

ans = 0
for i in range(m):
    index = bisect_left(stores, deliver[i])
    ans += min(abs(deliver[i] - stores[index]), abs(deliver[i] - stores[index - 1]))

print(ans)