結果
問題 | No.1708 Quality of Contest |
ユーザー |
![]() |
提出日時 | 2021-10-16 18:12:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 91 ms / 2,000 ms |
コード長 | 1,251 bytes |
コンパイル時間 | 545 ms |
コンパイル使用メモリ | 60,384 KB |
実行使用メモリ | 6,984 KB |
最終ジャッジ日時 | 2024-09-17 19:29:32 |
合計ジャッジ時間 | 3,574 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
/* -*- coding: utf-8 -*-** 1708.cc: No.1708 Quality of Contest - yukicoder*/#include<cstdio>#include<queue>#include<algorithm>using namespace std;/* constant */const int MAX_N = 200000;const int MAX_M = 200000;/* typedef */typedef long long ll;typedef queue<int> qi;typedef pair<int,int> pii;/* global variables */pii ps[MAX_N];bool used[MAX_M];ll ss[MAX_N + 1];/* subroutines *//* main */int main() {int n, m, x;scanf("%d%d%d", &n, &m, &x);for (int i = 0; i < n; i++) {int ai, bi;scanf("%d%d", &ai, &bi);bi--;ps[i] = pii(ai, bi);}sort(ps, ps + n, greater<pii>());qi q;for (int i = 0, j = 0; i < n; i++) {while (j < n && used[ps[j].second]) q.push(ps[j++].first);int v0 = (j < n) ? (ps[j].first + x) : 0;int v1 = (! q.empty()) ? q.front() : 0;if (v0 > v1) {ss[i + 1] = ss[i] + v0;used[ps[j].second] = true;j++;}else {ss[i + 1] = ss[i] + v1;q.pop();}}//for (int i = 0; i <= n; i++) printf("%lld ", ss[i]); putchar('\n');int k;scanf("%d", &k);ll sum = 0;for (int i = 0; i < k; i++) {int ci;scanf("%d", &ci);sum += ss[ci];}printf("%lld\n", sum);return 0;}