結果

問題 No.1012 荷物収集
ユーザー lam6er
提出日時 2025-03-31 17:18:49
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 466 ms / 2,000 ms
コード長 859 bytes
コンパイル時間 219 ms
コンパイル使用メモリ 82,164 KB
実行使用メモリ 97,940 KB
最終ジャッジ日時 2025-03-31 17:19:31
合計ジャッジ時間 12,506 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

import bisect

n, q = map(int, input().split())
goods = []
for _ in range(n):
    x, w = map(int, input().split())
    goods.append((x, w))

# Sort the goods by their x coordinates
goods.sort()
sorted_x = [x for x, w in goods]

# Precompute prefix sums for weight and weight*x
prefix_w = [0] * (n + 1)
prefix_wx = [0] * (n + 1)
for i in range(n):
    prefix_w[i + 1] = prefix_w[i] + goods[i][1]
    prefix_wx[i + 1] = prefix_wx[i] + goods[i][0] * goods[i][1]

total_w = prefix_w[n]
total_wx = prefix_wx[n]

# Process each query
queries = list(map(int, input().split()))
for X in queries:
    k = bisect.bisect_right(sorted_x, X)
    sum_left_w = prefix_w[k]
    sum_left_wx = prefix_wx[k]
    sum_right_w = total_w - sum_left_w
    sum_right_wx = total_wx - sum_left_wx

    cost = X * (sum_left_w - sum_right_w) + (sum_right_wx - sum_left_wx)
    print(cost)
0