#include <bits/stdc++.h>
using namespace std;
stack<int> s;
int main()
{
int n;
cin >> n;
int k;
int f;
for (int i = 1; i <= n; i++)
{
int a;
cin >> a;
k++;
f=k;
s.push(a);
if (a ==0)
{
s.pop();
cout<<s.top()<<endl;
}
else
{
}
}
return 0;
}
————————————————
版权声明:本文为CSDN博主「YCL708118」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YCL708118/article/details/125356699
皮皮又在清洗餐盘!
这次为了让餐盘的清洗工作尽快结束,当待清洗的餐盘大于等于 3 时,皮皮会一次清洗两个餐盘!
开始时,没有待清洗餐盘,之后会发生两种事件:
1.新餐盘加入:我们读入一个正整数 a 时,表示编号为 a 的餐盘放在餐盘顶端;
2.清洗餐盘:我们读入一个 0 时,若待清洗餐盘数不小于 3,则先清洗排在顶端的两个餐盘,否则只清洗顶端的一个餐盘。
两种事件一共发生了 n 次,请输出每次清洗的餐盘编号吧!
【输入格式】
输入共 2 行:
第 1 行,一个正整数 n,为事件发生了次数;
第 2 行,n 个非负整数 a_1,a_2,…,a_na1,a2,…,an,若 a_iai > 0,事件是 a_iai 号餐盘放在餐盘顶端;若 a_iai = 0,事件是清洗排在顶端的 1~2 个餐盘。
【输出格式】
输出若干行:
每行一个正整数,每当排在顶端的餐盘清洗时,在一行中输出它的编号。
【输入输出样例#1】
输入#1
复制
8 1 2 3 0 4 0 5 6
输出#1
复制
3 2 4
【输入输出样例#2】
输入#2
复制
5 3 2 1 0 0
输出#2
复制
1 2 3
【数据范围】
1 ≤ n ≤ 1000,0 ≤ a_1,a_2,…,a_na1,a2,…,an ≤ 1,000,000。