結果
問題 |
No.1012 荷物収集
|
ユーザー |
|
提出日時 | 2022-08-17 22:32:11 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 701 bytes |
コンパイル時間 | 252 ms |
コンパイル使用メモリ | 82,108 KB |
実行使用メモリ | 106,068 KB |
最終ジャッジ日時 | 2024-10-05 04:24:53 |
合計ジャッジ時間 | 13,356 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 11 WA * 30 |
ソースコード
import bisect n,q = map(int,input().split()) xw = [[int(i) for i in input().split()] for j in range(n)] x = [int(i) for i in input().split()] x.sort() xw.sort() pos = [] wei = [] for i in range(n): pos.append(xw[i][0]) wei.append(xw[i][1]) rw = [0]*(n+1) for i in range(n): rw[i+1] = rw[i]+wei[i] ans = 0 for i in range(n): ans += abs(x[0]-pos[i])*wei[i] print(ans) for i in range(q-1): bidx = bisect.bisect_right(pos,x[i]) aidx = bisect.bisect_right(pos,x[i+1]) ans += (x[i+1]-x[i])*(rw[bidx]-rw[0]) ans -= (x[i+1]-x[i])*(rw[n]-rw[aidx]) for j in range(bidx,aidx): ans -= abs(x[i]-pos[j])*wei[j] ans += abs(x[i+1]-pos[j])*wei[j] print(ans)