题目描述
请你实现一个栈(stack),支持如下操作:
push(x)
:向栈中加入一个数 xx。pop()
:将栈顶弹出。如果此时栈为空则不进行弹出操作,输出Empty
。query()
:输出栈顶元素,如果此时栈为空则输出Anguei!
。size()
:输出此时栈内元素个数。
输入格式
本题单测试点内有多组数据。
输入第一行是一个整数 TT,表示数据组数。对于每组数据,格式如下:
每组数据第一行是一个整数,表示操作的次数 nn。
接下来 nn 行,每行首先由一个字符串,为 push
,pop
,query
和 size
之一。若为 push
,则其后有一个整数 xx,表示要被加入的数,xx 和字符串之间用空格隔开;若不是 push
,则本行没有其它内容。
输出格式
对于每组数据,按照「题目描述」中的要求依次输出。每次输出占一行。
输入输出样例
输入 #1复制
2 5 push 2 query size pop query 3 pop query size
输出 #1复制
2 1 Anguei! Empty Anguei! 0
说明/提示
样例 1 解释
对于第二组数据,始终为空,所以 pop
和 query
均需要输出对应字符串。栈的 size 为 0。
数据规模与约定
对于全部的测试点,保证 1 \leq T, n\leq 10^61≤T,n≤106,且单个测试点内的 nn 之和不超过 10^6106,即 \sum n \leq 10^6∑n≤106。保证 0 \leq x \lt 2^{64}0≤x<264。
提示
- 请注意大量数据读入对程序效率造成的影响。
- 因为一开始数据造错了,请注意输出的
Empty
不含叹号,Anguei!
含有叹号。 - 程序
-
#include <stack> #include <string> #include <iostream> int main() { std::cin.tie(0); std::ios::sync_with_stdio(false); int T, n; for (std::cin >> T; T; --T) {