refresh的停车场
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
输出
示例输入
2 6 Add 18353364208 Add 18353365550 Add 18353365558 Add 18353365559 Del Out
示例输出
18353365558 18353364208
这道题的关键在于弄清题意,搞清楚停车场内的车辆和等候的车辆分别用什么存储,以及停车场中的车辆出去后,进车辆时要判断等候队列是否为空。
代码如下:
#include <iostream>
#include <queue>
#include <stack>
#include <cstring>
using namespace std;
int main(){
int m,n,i;
string ch1,ch2;
while(cin>>n>>m){
stack<string> s;//停车场内的车辆用栈存储;
queue<string> q;//等候的车辆用队列存储;
int flag=1;
for(i=1;i<=m;i++){
cin>>ch1;
if(ch1=="Add"){
cin>>ch2;
if(s.size()<n){
s.push(ch2);
}
else
q.push(ch2);
}
else if(ch1=="Del"){
if(s.empty())
flag=0;
else{
s.pop();
if(!q.empty()){/*注意停车场中的车辆出去后,进车辆时要判断等候队列是否为空*/
s.push(q.front());
q.pop();
}
}
}
else if(ch1=="Out"){
if(q.empty())
flag=0;
else
q.pop();
}
}
if(flag==0)
cout<<"Error"<<endl;
else{
while(!s.empty()){
cout<<s.top()<<endl;
s.pop();
}
}
}
return 0;
}