64分,求助,玄关
  • 板块P1801 黑匣子
  • 楼主huyangmu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/26 17:09
  • 上次更新2024/1/26 19:44:19
查看原帖
64分,求助,玄关
632311
huyangmu楼主2024/1/26 17:09

#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int N = 2e5 + 5;
int n, m, a[N], b[N], cnt = 1;
map<int,int> mp;
priority_queue<int,vector<int>,greater<int> > q;
priority_queue<int> que;
signed main (){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; ++i){
		cin >> a[i];
	}
	for (int i = 1; i <= m; ++i) {
		cin >> b[i];
		++mp[b[i]];
	}
	for (int i = 1; i <= n; ++i){
		if (que.size() == 0) que.push(a[i]);
		else if (que.top() >= a[i]) que.push(a[i]);
		else q.push(a[i]);
		while (que.size() > cnt) {
			q.push(que.top());
			que.pop();
		}
		if (mp.count(i)) {
			while (mp[i] != 0){
				cout << que.top() << '\n';
				++cnt;
				--mp[i];
				if (q.size() == 0) continue;
				que.push(q.top());
				q.pop();
			}
		}		
	}
	return 0;
}
2024/1/26 17:09
加载中...