|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <cstdio>
- #include <cstring>
- #include <string>
- #include <iostream>
- #include <algorithm>
- #include <queue>
- #define MAXN 200001
- int n, m, a[MAXN], b[MAXN];
- std::priority_queue<int> q1;
- std::priority_queue<int, std::vector<int>, std::greater<int> > q2;
- int main() {
- scanf("%d %d", &n, &m);
- for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
- for (int i = 1; i <= m; ++i) scanf("%d", &b[i]);
- int now = 1, cnt = 0;
- for (int i = 1; i <= b[now]; ++i) {
- q1.push(a[i]); //把所有的元素放进来
- while (i == b[now]) { // 表示全部都放完了,放在了大根堆
- ++cnt;
- while(q1.size() >= cnt) {
- int x = q1.top(); q1.pop();
- q2.push(x);
- }
- int ans = q2.top();
- q1.push(ans), q2.pop();
- printf("%d\n", ans);
- ++now;
- }
- }
- return 0;
- }
复制代码 详细一点看不懂 |
|