题目描述
读入 个整数,把它们依次 push 进栈,再把它们全部 pop 出来。在弹出的过程中,随时记录已经看到过的数里最大的那个,最后输出这个最大值。
先看下面这个「读 个数 push 进栈,再全部 pop 并逐个输出」的完整模板程序,把它改造成边弹边比、只输出最大值即可:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
stack<long long> st; // 定义一个存 long long 的栈
for (int i = 0; i < n; i++) {
long long x;
cin >> x;
st.push(x); // x 进栈
}
while (!st.empty()) { // 栈非空就继续弹
cout << st.top() << " "; // 先用 top() 看栈顶
st.pop(); // 再用 pop() 弹出,pop 不返回值
}
cout << endl;
return 0;
}
输入格式
第一行一个整数 ()。
第二行 个整数 ()。
输出格式
一行一个整数:弹出过程中遇到的最大值。
样例
输入:
5
3 -1 4 -5 2
输出:
4
五个数依次进栈再依次弹出,弹出的数里最大的是 4。
数据范围
,。 已经超出 int 的表示范围——栈和记录最大值的变量都要用 long long;最大值的初值别拍脑袋设成 ,这批数据允许全是负数。