#B3614. 【模板】栈(Stack Template)

0

【模板】栈(Stack Template)

【模板】栈(Stack Template)

题目描述

请你实现一个栈(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≤T,n≤1061 \leq T, n\leq 10^6,且单个测试点内的 nn 之和不超过 10610^6,即 ∑n≤106\sum n \leq 10^6。保证 0≤x<2640 \leq x \lt 2^{64}。

提示

  • 请注意大量数据读入对程序效率造成的影响。
  • 请注意输出的 Empty 不含叹号,Anguei! 含有叹号。

知识点与难度

本题涉及的知识点从属于 GESP 6级,难度(CF Rating):900。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例及最小边界测试
1 20 3~8 1≤T≤101 \le T \le 10,∑n≤1000\sum n \le 1000,x<231x < 2^{31}
2 15 9~11 Hack 数据:含 x≥263x \ge 2^{63}(需 unsigned long long)及多测栈未清空、空栈连续 pop/query
3 30 12~20 ∑n≤5×105\sum n \le 5 \times 10^5,0≤x<2640 \le x < 2^{64}
4 25 21~25 ∑n≤106\sum n \le 10^6,0≤x<2640 \le x < 2^{64} 随机混合压力测试

出处:原题链接