代码改变世界

1082. MANAGER

2012-01-27 00:08  Min·zc  阅读(203)  评论(0编辑  收藏  举报

按照题目的要求去进行模拟就可以了,数据比较弱。

#include<iostream>
#include<map>
using namespace std;
int main()
{
int max;
int first=1;
while(cin>>max)
{
char cmd;
int p=1;
int queue[10010];
int rmlist[10010];
map<int,int> process;
int k=1;
int num;
cin>>num;
for(int i=0;i<num;i++)
cin>>rmlist[i];


while(cin>>cmd)
{
if(cmd=='e')
break;
else if(cmd=='a')
{
int cst;
cin>>cst;
process[cst]++;
}
else if(cmd=='p')
{
cin>>p;
}
else if(cmd=='r')
{

if(process.empty())
queue[k++]=-1;
else
{
if(p==1)
{
queue[k++]=process.begin()->first;
process.begin()->second--;
if(process.begin()->second==0)
process.erase(process.begin());
}
else
{
queue[k++]=(--process.end())->first;
(--process.end())->second--;
if((--process.end())->second==0)
process.erase((--process.end()));
}
}

}
}
if(first)
{
first=0;
}
else
cout<<endl;
for(int i=0;i<num;i++)
cout<<queue[rmlist[i]]<<endl;
}
}