結果
| 問題 | No.1012 荷物収集 |
| コンテスト | |
| ユーザー |
milanis48663220
|
| 提出日時 | 2020-03-20 22:31:17 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 177 ms / 2,000 ms |
| コード長 | 1,321 bytes |
| コンパイル時間 | 865 ms |
| コンパイル使用メモリ | 87,628 KB |
| 実行使用メモリ | 11,648 KB |
| 最終ジャッジ日時 | 2024-12-15 06:49:05 |
| 合計ジャッジ時間 | 7,413 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 41 |
ソースコード
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
int N, Q;
ll x[100000], w[100000];
ll X[100000];
ll Y[100000];
int idx[100000];
P p[100000];
P q[100000];
ll sumW[100001];
ll sumWX[100001];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout << setprecision(10) << fixed;
cin >> N >> Q;
for(int i = 0; i < N; i++){
cin >> x[i] >> w[i];
p[i] = P(x[i], w[i]);
}
sort(p, p+N);
for(int i = 0; i < N; i++){
x[i] = p[i].first;
w[i] = p[i].second;
sumW[i+1] = sumW[i]+w[i];
sumWX[i+1] = sumWX[i]+(w[i]*x[i]);
}
for(int i = 0; i < Q; i++){
cin >> X[i];
q[i] = P(X[i], i);
}
sort(q, q+N);
for(int i = 0; i < Q; i++){
Y[i] = q[i].first;
idx[i] = q[i].second;
}
for(int i = 0; i < Q; i++){
auto ptr = lower_bound(x, x+N, X[i]);
int m = ptr-x;
ll rXW = sumWX[N]-sumWX[m];
ll lXW = sumWX[m];
ll rW = sumW[N]-sumW[m];
ll lW = sumW[m];
ll ans = X[i]*(lW-rW)+rXW-lXW;
// cout << m << ' ' << lW << ' ' << rW << ' ' << lXW << ' ' << rXW << endl;
cout << ans << endl;
}
}
milanis48663220