这几天写了些简单的stack 和 queue的题。这道题是priority_queue的。
#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
struct Node
{
int Q_num;
int k;
int time;
};
priority_queue <Node> p;
priority_queue <Node>q;
bool operator < (const Node &a,const Node &b)
{
if(a.time - b.time != 0)
{
if(a.time - b.time > 0) return 1;
else return 0;
}
else
{
if(a.Q_num > b.Q_num) return 1;
else return 0;
}
}
int main()
{
string s;
int Q,t,k;
Node n;
//freopen("a.txt","r",stdin);
while(cin>>s)
{
if(s[0] == 'R') {
cin>>Q>>t;
n.Q_num = Q;
n.time = t;
n.k = n.time;
q.push(n);
}
if(s[0] == '#')
{
cin>>k;
while(p.size() < k)
{
n = q.top();p.push(n);
q.pop();
n.time += n.k ;
q.push(n);
}
while(!p.empty()) {cout<<p.top().Q_num<<endl;p.pop();}
}
}
return 0;
}