QBHEAP - Hàng đợi có độ ưu tiên
Tác giả: hieult
Ngôn ngữ: C++
#include<iostream>
//#include<conio.h>
#include<algorithm>
#include<vector>
#include<string.h>
using namespace std;
vector<long> a;
int main()
{
string st;
char ch;
long x,i,t=0;
//freopen("qbheap.inp","r",stdin);
while((cin>>ch)>0)
{
if (ch == '+')
{
cin>>x;
if (a.size()<15000)
{
a.push_back(x);
push_heap(a.begin(),a.end());
}
}
else
if (a.size() > 0)
{
x = a[0];
while (x==a[0]&&a.size()>0)
{
pop_heap(a.begin(),a.end());
a.pop_back();
}
}
}
sort_heap(a.begin(),a.end());
for (i=a.size()-1;i>=1;i--)
if (a[i] != a[i-1])
{
t++;
}
printf("%ld\n",t+1);
for (i=a.size()-1;i>=1;i--)
if (a[i] != a[i-1])
{
printf("%ld\n",a[i]);
}
printf("%ld",a[0]);
//getch();
}