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;
}