sdut 2088 数据结构实验之栈与队列十一:refresh的停车场

来源:互联网 发布:linux中链接目的 编辑:程序博客网 时间:2024/05/16 19:32

数据结构实验之栈与队列十一:refresh的停车场

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss

Problem Description

 refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先

进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,

Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

Input

 输入为多组数据,每组数据首先输入N和M(0< n,m <200000),接下来输入M条命令。

Output

 输入结束后,如果出现停车场内无车辆而出现Del或者便道内无车辆而出现Out,则输出Error,否则输出停车场内的车辆,最后进入的最先输出,无车辆不输出。

Example Input

2 6Add 18353364208Add 18353365550Add 18353365558Add 18353365559DelOut

Example Output

1835336555818353364208
/*看了一会题意竟然没看懂最后的结果是怎么输出来的,看了解析之后才知道
输出的是停车场内的出车顺序*/
#include <iostream>#include <queue>#include <stack>using namespace std;int main(){    int n,m;    string num;    while(cin>>n>>m)    {        stack<string>s;        queue<string>q;        char a[4];        int tag=0,t;        for(int i=0;i<m;++i)        {            cin>>a;            if(a[0]=='A')            {                cin>>num;                t=s.size();                if(t==n)                    q.push(num);                else                    s.push(num);            }            else if(a[0]=='D')            {                if(s.empty())                    tag=1;                else                {                    s.pop();                    //q.front();//                    if(!q.empty())//不要再错写成while()                    {                        s.push(q.front());                        q.pop();                    }                }            }            else            {                if(q.empty())                    tag=1;                else                    q.pop();            }        }        if(tag)            cout<<"Error"<<endl;        else        {         while(!s.empty())        {            cout<<s.top()<<endl;;            s.pop();        }        }    }    return 0;}


阅读全文
0 0
原创粉丝点击