求助,手写堆20pts
  • 板块P1801 黑匣子
  • 楼主ghx0052
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/2/25 21:27
  • 上次更新2024/2/26 13:29:35
查看原帖
求助,手写堆20pts
748238
ghx0052楼主2024/2/25 21:27
#include <bits/stdc++.h>
#define me(x) a[(x)]
#define fa(x) a[(x / 2)]
#define ls(x) a[(x * 2)]
#define rs(x) a[(x * 2 + 1)]
using namespace std;

int a[200010];
int v[200010], v1[200010];
int n, t, cnt = 1, idx = 0;
int siz;

void modify(int x) {
	if (x == 1 || me(x) > fa(x)) return;
	swap(me(x), fa(x));
	modify(x / 2);
}

void push(int x) {
	a[++ siz] = x;
	modify(siz);
}

int main() {
	cin >> n >> t;
	for (int i = 1; i <= n; i ++) cin >> v[i];
	for (int i = 1; i <= t; i ++) cin >> v1[i];
	for (int i = 1; i <= n; i ++) {
		push(v[i]);
		if (i == v1[cnt]) cnt ++, idx ++, cout << a[idx] << endl;
	}
}

rt

2024/2/25 21:27
加载中...