您的位置:首页 > 理论基础 > 数据结构算法

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

2018-02-09 16:52 302 查看

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

[align=center]Time Limit: 1000 msMemory Limit: 65536 KiB[/align][align=center]
[/align]

Problem Description

 refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

Input

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

Output

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

Sample Input

2 6
Add 18353364208
Add 18353365550
Add 18353365558
Add 18353365559
Del
Out

Sample Output

18353365558
18353364208

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
int n,m,flag;
string s1,s;
while(cin>>n>>m)
{
flag=0;
stack<string>a;  //停车场
queue<string>b;  //便道
while(m--)
{
cin>>s;
if(s=="Add")
{
cin>>s1;
if(n!=a.size())  //停车场没满
{
a.push(s1);
}
else
{
b.push(s1);
}
}
if(s=="Del")
{
if(a.empty())
flag=1;
else
{
a.pop();
if(!b.empty())   //一定要判断便道是否有车
{
a.push(b.front());
b.pop();
}
}
}
if(s=="Out")
{
if(b.empty())
flag=1;
else
{
b.pop();
}
}
}
if(flag==1)
cout<<"Error"<<endl;
else
{
while(!a.empty())
{
cout<<a.top()<<endl;
a.pop();
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SDUT oj