友情提示:380元/半年,儿童学编程,就上码丁实验室。
【题目描述】
从前有个栈,一开始是空的。
你写下了 $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$。