難易度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)