44 分求助 qwq
查看原帖
44 分求助 qwq
717286
__HHX__楼主2023/8/10 17:00
#include<iostream>

using namespace std;

namespace Heap {
	template <size_t Maxlen, class T = int>
	struct heap {
		T var[Maxlen];
		int len = 0;
		
		T top() {
			return var[1];
		}
		
		bool empty() {
			return !len;
		}
		
		void push(T &x) {
			var[++len] = x;
			for(int k = len; k > 1 && var[k] < var[k >> 1]; k >>= 1) {
				swap(var[k], var[k >> 1]);
			}
		}
		
		void pop() {
			if(empty()) {
				return;
			}
			int k = 1;
			for(int x; (k << 1) <= len; k = x) {
				x = (var[k << 1] < var[k << 1 | 1] ? k << 1 : k << 1 | 1);
				x = (x > len ? k << 1 : x); 
				swap(var[k], var[x]);
			}
			swap(var[k], var[len--]);
		}
		
	};
};

using namespace Heap;

const int MaxN = 1e6 + 3;

heap<MaxN>h;

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n;
	cin >> n;
	while(n--) {
		int op, x;
		cin >> op;
		if(op == 1) {
			cin >> x;
			h.push(x);
		} else if(op == 2) {
			cout << h.top() << '\n';
		} else {
			h.pop();
		}
	}
	return 0;
}
2023/8/10 17:00
加载中...