03:火车站中的驶出的火车
总时间限制:
1000ms
内存限制:
65535kB
描述
有编号从1到N的N辆火车等待进入车站,而车站的容量是有限的,需要对火车进行调度。
只有两种调度指令,进站和出站。
现在车站给出了M个指令,请你输出在完成这些调度指令后,车站中驶出火车编号。
输入
两行
第一行两个整数,N和M
第二行为M个为-1或者为1的整数,-1代表出站,1代表入站
输出
一行整数,为驶出车站的火车编号
样例输入
3 3 1 -1 1
样例输出
1
来源
金华信奥熊老师
#include<iostream>
const int StackSize = 1000;
using namespace std;
template<typename T>
class Seqstack
{
public:
Seqstack();
~Seqstack()
{
}
void Push(T x);
T Pop();
T GetTop();
int empty();
private:
T data[StackSize];
int top;
};
int main()
{
int n, m;
cin >> n >> m;
int count = 1;
Seqstack<int> Seq;
for (int i = 0; i < m; i++)
{
int temp;
cin >> temp;
if (temp == 1)
{
Seq.Push(count++);
}
if (temp == -1)
{
if (!Seq.empty())
{
cout << Seq.Pop() << " ";
}
}
}
return 0;
}
template<typename T>
Seqstack<T>::Seqstack()
{
top = -1;
}
template<typename T>
void Seqstack<T>::Push(T x)
{
if (top == StackSize - 1)
{
cout << "上溢" << endl;
}
data[++top] = x;
}
template<typename T>
T Seqstack<T>::Pop()
{
T x;
if (top == -1)
{
cout << "下溢" << endl;
}
x = data[top--];
return x;
}
template<typename T>
T Seqstack<T>::GetTop()
{
return data[top];
}
template<typename T>
int Seqstack<T>::empty()
{
if (top == -1)
{
return true;
}
else
{
return false;
}
}