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

Download