fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class PriorityQueue {
  5. private:
  6. vector<pair<int,int>>tasks;
  7. public:
  8. PriorityQueue(){
  9. tasks.clear();
  10. }
  11. bool empty(){
  12. return tasks.empty();
  13. }
  14. void enqueue(int id, int priority){
  15. //with greater priority
  16. tasks.push_back({id,priority});
  17. sort(tasks.begin(),tasks.end(),[](const pair<int,int> &a, const pair<int,int> &b){
  18. return a.second >= b.second;
  19. });
  20. }
  21. int dequeue(){
  22. if(empty()) return -1;
  23. int id = tasks[0].first;
  24. tasks.erase(tasks.begin());
  25. return id;
  26. }
  27. };
  28. int main(){
  29.  
  30. PriorityQueue pq;
  31. pq.enqueue(1131,1);
  32. pq.enqueue(3111,3);
  33. pq.enqueue(2211,2);
  34. pq.enqueue(3161,3);
  35. pq.enqueue(7761,7);
  36.  
  37. cout << pq.dequeue()<<endl;
  38. cout << pq.dequeue()<<endl;
  39.  
  40. pq.enqueue(1535,1);
  41. pq.enqueue(2815,2);
  42. pq.enqueue(3845,3);
  43. pq.enqueue(3145,3);
  44. while(!pq.empty()){
  45. cout << pq.dequeue() << " ";
  46. }
  47. cout << endl;
  48. return 0;
  49. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
7761
3111
3145 3161 3845 2815 2211 1131 1535