結果
問題 | No.1012 荷物収集 |
ユーザー | tamato |
提出日時 | 2020-03-20 21:49:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 379 ms / 2,000 ms |
コード長 | 975 bytes |
コンパイル時間 | 436 ms |
コンパイル使用メモリ | 82,408 KB |
実行使用メモリ | 109,120 KB |
最終ジャッジ日時 | 2024-12-15 05:25:56 |
合計ジャッジ時間 | 9,726 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 41 |
ソースコード
def main(): import sys input = sys.stdin.buffer.readline N, Q = map(int, input().split()) XW = [] for _ in range(N): x, w = map(int, input().split()) XW.append((x, w)) Q = list(map(int, input().split())) for x in Q: XW.append((x, 0)) XW.sort(key=lambda l: l[0]) L = len(XW) ans = {} dp_left = [0] * L dp_right = [0] * L S = 0 x_prev = XW[0][0] for i in range(L): x, w = XW[i] dp_left[i] = dp_left[i-1] + (x - x_prev) * S S += w x_prev = x if w == 0: ans[x] = dp_left[i] S = 0 x_prev = XW[-1][0] for i in range(L): x, w = XW[-i-1] if i: dp_right[-i-1] = dp_right[-i] + (x_prev - x) * S else: dp_right[-1] = 0 S += w x_prev = x if w == 0: ans[x] += dp_right[-i-1] for x in Q: print(ans[x]) if __name__ == '__main__': main()