QBHEAP - Hàng đợi có độ ưu tiên

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <stdio.h>
#include <iostream>
#include <set>
using namespace std;

multiset<int> se;
int a[15000], na;

int main() {
	char s[100];
	while(gets(s)) {
		if(s[0]=='-') {
			if(se.size()>0) {
				multiset<int> :: iterator i = se.end();
				--i;
				se.erase( *i );
			}
		} else {
			int x;
			sscanf(s+1, "%d", &x);
			if(se.size()<15000) se.insert(x);
		}
	}
	
	for(set<int> :: reverse_iterator p = se.rbegin(); p!=se.rend(); ++p) 
		a[na++] = *p;
	int n = na==0?0:1;
	for(int i=1;i<na;++i) if(a[i]!=a[i-1]) a[n++] = a[i];
	printf("%d\n", n);
	for(int i=0;i<n;++i) printf("%d\n", a[i]);
	return 0;
}

Download