#include <bits/stdc++.h> #include using namespace std;

int main() {

ios::sync_with_stdio(false);
cin.tie(0);

int N;
cin >> N;  // 读取操作总数

stack<int> stk;          // 主栈:存储货物重量(后进先出)
stack<int> max_stk;      // 辅助栈:存储当前仓库的最大重量(与主栈同步)

while (N--) {            // 遍历每个操作
    int op;
    cin >> op;
    
    if (op == 0) {       // 操作0:入库(格式:0 X)
        int X;
        cin >> X;
        stk.push(X);     // 重量入主栈
        
        // 辅助栈维护当前最大值:空栈则存X,否则存“栈顶与X的较大者”
        if (max_stk.empty()) {
            max_stk.push(X);
        } else {
            max_stk.push(max(max_stk.top(), X));
        }
    } else if (op == 1) { // 操作1:出库(格式:1)
        // 栈非空时才处理,避免空栈操作
        if (!stk.empty()) {
            stk.pop();   // 弹出最晚入库的货物
            max_stk.pop(); // 辅助栈同步弹出,保持状态一致
        }
    } else if (op == 2) { // 操作2:查询(格式:2)
        if (max_stk.empty()) { // 仓库为空时输出0
            cout << "0\n";
        } else { // 否则输出当前最大重量(辅助栈顶)
            cout << max_stk.top() << "\n";
        }
    }
}

return 0;

}

0 comments

No comments so far...

Information

ID
1637
Time
1000ms
Memory
256MiB
Difficulty
1
Tags
# Submissions
2
Accepted
0
Uploaded By