题目描述
小托米真的很可爱呀(>_<)
这天,可爱的小托米得到了n堆积木,且第i堆积木初始时有ai块积木.
小托米很快就喜欢上了玩积木.他会作出三种操作:
1.把第v堆的积木数量更改为x.
2.在每堆积木的上面都加上y个积木.
3.数第q堆积木的积木个数.
由于这天可爱的小托米实在是太困了,所以他请你帮他完成这些操作.
输入描述:
第一行两个整数n,m. 第二行n个整数,第i个整数代表ai的值. 接下来m行,每行代表一个操作: 第一个整数t代表操作的类型 若t=1,则接下来两个整数v,x,代表操作1. 若t=2,则接下来一个整数y,代表操作2. 若t=3,则接下来一个整数q,代表操作3.
输出描述:
对于每个操作3,输出其对应的答案.
输入
10 11 1 2 3 4 5 6 7 8 9 10 3 2 3 9 2 10 3 1 3 10 1 1 10 2 10 2 10 3 1 3 10 3 9
输出
2 9 11 20 30 40 39
#include <cstdio> #include <iostream> using namespace std; int a[100010]; int main() { int n, m, i, t, l; scanf("%d %d", &n, &m); for(i = 1; i <= n; i++) { scanf("%d", &a[i]); } l = 0; while(m--) { scanf("%d", &t); if(t==2) { int y; scanf("%d", &y); l += y; continue; } else if(t==1) { int v, x; scanf("%d %d", &v, &x); a[v] = x - l; continue; } else if(t==3) { int q; scanf("%d", &q); printf("%d\n", a[q]+l); continue; } } return 0; }