#include<bits/stdc++.h>
using namespace std;
class PriorityQueue {
private:
vector<pair<int,int>>tasks;
public:
PriorityQueue(){
tasks.clear();
}
bool empty(){
return tasks.empty();
}
void enqueue(int id, int priority){
//with greater priority
tasks.push_back({id,priority});
sort(tasks.begin(),tasks.end(),[](const pair<int,int> &a, const pair<int,int> &b){
return a.second >= b.second;
});
}
int dequeue(){
if(empty()) return -1;
int id = tasks[0].first;
tasks.erase(tasks.begin());
return id;
}
};
int main(){
PriorityQueue pq;
pq.enqueue(1131,1);
pq.enqueue(3111,3);
pq.enqueue(2211,2);
pq.enqueue(3161,3);
pq.enqueue(7761,7);
cout << pq.dequeue()<<endl;
cout << pq.dequeue()<<endl;
pq.enqueue(1535,1);
pq.enqueue(2815,2);
pq.enqueue(3845,3);
pq.enqueue(3145,3);
while(!pq.empty()){
cout << pq.dequeue() << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFByaW9yaXR5UXVldWUgewogICAgcHJpdmF0ZToKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PnRhc2tzOwogICAgcHVibGljOgogICAgUHJpb3JpdHlRdWV1ZSgpewogICAgICAgIHRhc2tzLmNsZWFyKCk7CiAgICB9CiAgICBib29sIGVtcHR5KCl7CiAgICAJcmV0dXJuIHRhc2tzLmVtcHR5KCk7CiAgICB9CiAgICB2b2lkIGVucXVldWUoaW50IGlkLCBpbnQgcHJpb3JpdHkpewogICAgICAgIC8vd2l0aCBncmVhdGVyIHByaW9yaXR5CiAgICAgICAgdGFza3MucHVzaF9iYWNrKHtpZCxwcmlvcml0eX0pOwogICAgICAgIHNvcnQodGFza3MuYmVnaW4oKSx0YXNrcy5lbmQoKSxbXShjb25zdCBwYWlyPGludCxpbnQ+ICZhLCBjb25zdCBwYWlyPGludCxpbnQ+ICZiKXsKICAgICAgICAgICAgcmV0dXJuIGEuc2Vjb25kID49IGIuc2Vjb25kOwogICAgICAgIH0pOwogICAgfQogICAgaW50IGRlcXVldWUoKXsKICAgICAgICBpZihlbXB0eSgpKSAgcmV0dXJuIC0xOwogICAgICAgIGludCBpZCA9IHRhc2tzWzBdLmZpcnN0OwogICAgICAgIHRhc2tzLmVyYXNlKHRhc2tzLmJlZ2luKCkpOwogICAgICAgIHJldHVybiBpZDsKICAgIH0KfTsKaW50IG1haW4oKXsKICAgIAogICAgUHJpb3JpdHlRdWV1ZSBwcTsKICAgIHBxLmVucXVldWUoMTEzMSwxKTsKICAgIHBxLmVucXVldWUoMzExMSwzKTsKICAgIHBxLmVucXVldWUoMjIxMSwyKTsKICAgIHBxLmVucXVldWUoMzE2MSwzKTsKICAgIHBxLmVucXVldWUoNzc2MSw3KTsKCiAgICBjb3V0IDw8IHBxLmRlcXVldWUoKTw8ZW5kbDsKICAgIGNvdXQgPDwgcHEuZGVxdWV1ZSgpPDxlbmRsOwoKICAgIHBxLmVucXVldWUoMTUzNSwxKTsKICAgIHBxLmVucXVldWUoMjgxNSwyKTsKICAgIHBxLmVucXVldWUoMzg0NSwzKTsKICAgIHBxLmVucXVldWUoMzE0NSwzKTsKICAgIHdoaWxlKCFwcS5lbXB0eSgpKXsKICAgICAgICBjb3V0IDw8IHBxLmRlcXVldWUoKSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==