问题描述
在古老的城堡中,小蓝找到了一个神秘的盒子。这个盒子有一个奇特的魔法——每当有人对它说出一个数字,它就会制造一个能量值与数字相同的宝石,并存入盒子中,这些宝石会按照他们被制造出的顺序排列。但是,盒子也有个特殊的指令:
- 当人们对它说出 "0" 时,它就会把最新制造的宝石从盒子中取出。如果盒子中没有宝石,则不做任何操作。
小蓝想测试这个神秘盒子的魔法,他会按顺序对盒子说出 n 个数字(包括 "0"),你的任务是模拟这个过程,并在说完这 n 个数字后将盒子中的宝石的能量值逆序输出。
输入格式
输入的第一行包含一个整数 n,表示小蓝会对盒子说出的数字的数量。
第二行包含 n 个整数1,2,⋯,a1,a2,⋯,an,表示小蓝说出的数字。如果 ai=0,则从盒子中弹出最新的宝石。否则,盒子将制造并存入一个能量值为ai 的宝石。
输出格式
输出每一步后盒子中的宝石,每个宝石用其对应的数字表示。每一步的结果应该在新的一行中输出。
样例输入
5
1 2 0 3 1
样例输出
1
3
1
代码:
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> s;
int n;
cin>>n;
while(n--)
{
int a;
cin>>a;
if(a!=0)
{
s.push(a);
}
else
{
s.pop();
}
}
while(!s.empty())
{
int k=s.top();
cout<<k<<endl;
s.pop();
}
return 0;
}
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 2s | 256M |
Python3 | 3s | 256M |
PyPy3 | 3s | 256M |
Go | 3s | 256M |
JavaScript | 3s | 256M |
序号 | 状态 | 用时 | 内存 | 提交时间 | 代码执行结果 |
---|---|---|---|---|---|
1 | ![]() | 34ms | 3124kb | 2024/06/20 21:04:50 | 通过 |
2 | ![]() | 11ms | 3164kb | 2024/06/20 21:04:50 | 通过 |
3 | ![]() | 32ms | 3124kb | 2024/06/20 21:04:50 | 通过 |
4 | ![]() | 22ms | 3124kb | 2024/06/20 21:04:50 | 通过 |
5 | ![]() | 29ms | 3124kb | 2024/06/20 21:04:50 | 通过 |
6 | ![]() | 36ms | 3388kb | 2024/06/20 21:04:50 | 通过 |
7 | ![]() | 7ms | 1672kb | 2024/06/20 21:04:50 | 通过 |
8 | ![]() | 6ms | 1672kb | 2024/06/20 21:04:50 | 通过 |
9 | ![]() | 26ms | 3124kb | 2024/06/20 21:04:50 | 通过 |
10 | ![]() | 29ms | 3124kb | 2024/06/20 21:04:50 | 通过 |