‹ 上一题 下一题 ›

g5-08210. 弹出最大值 未做

1000 ms 256 MB 测试点 10 通过率 100% GESP-55级·STLstack

题目描述

读入 个整数,把它们依次 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;最大值的初值别拍脑袋设成 ,这批数据允许全是负数。

输入
输出

            
答案