编程题

1754:栈的维护


时间限制: 1000 ms         内存限制: 524288 KB
提交数:280    通过数: 101

【题目描述】

从前有个栈,一开始是空的。

你写下了 $m$ 个操作,每个操作形如“$k\\;v$”,若 $k = 0$,代表往栈顶加入一个数 $v$;若$k = 1$,则代表从栈顶弹出 $v$ 个数,如果栈中的元素少于 $v$ 个,则全部弹出。

接着你又进行了 $q$ 次修改,每次你会选择一个操作,并且修改它的两个参数。

在每次修改后,你都要求出如果依次执行这些操作,最后栈中剩下的元素之和。

【输入】

第一行两个正整数$m,q$ ,分别表示操作数和修改次数。

接下来 $m$ 行,每行两个整数 $k,v$ ,代表一个操作。

接下来 $q$ 行,每行三个正整数 $c,k,v$ ,表示将第 $c$ 个操作的参数修改为 $k$ 和 $v$。

【输出】

输出 $q$ 行,每行一个整数,代表依次执行所有操作后栈中剩下的元素之和。

【输入样例】

4 3
0 1
0 2
1 2
0 3
2 0 3
3 1 1
4 1 1

【输出样例】

3
4
0

【提示】

【数据规模】

对于30%的数据,$m,q≤1000$。

对于另外20%的数据,保证执行每个$k = 1$的操作时都会弹出栈中所有元素。

对于100%的数据,$m, q ≤ 2×10^5,v ≤ 10^4$。

查看答案
赣ICP备20007335号-2