题目描述
小灰灰和小东东在玩一种竞技游戏。在游戏中,小灰灰给小东东由n个正整数组成的序列以及m条操作指令,需要小东东按照指令来对n个整数进行操作。其中每条指令都包括二个整数(a, b),意义如下:
如果a大于0,表示将序列中第b个数乘于2;
如果a小于0,表示将序列中第b个数加上2;
如果a等于0,则忽略此条指令。
游戏结束后,小东东需要求出序列中的最大值。现在小东东求助于你,希望你能用计算机编程求出他需要的答案。题目保证计算结果在int的表示范围内。
输入格式
输入数据第一行为一整数T,表示有T组数据。每组输入数据第一行有二个整数n, m, (1 <= n <= 100), (1 <= m <= 100), 第二行有n个整数(1 ~100),表示初始序列,编号从1...n。接着是m行表示m条指令,每行共有2个用空格隔开的整数a b,(-50<= a <= 50), (1 <= b <= n)。
输出
对于每组数据,输出一个整数占一行,表示操作后的序列中的最大整数。
样例输入
2
2 2
1 2
1 1
-1 2
3 4
1 5 6
1 1
1 1
0 1
-1 1
样例输出
4
6
#include<stdio.h>
int main()
{
int T,n,m,i,a,b,max,s[101];
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&s[i]);
while(m--)
{
scanf("%d %d",&a,&b);
if(a>0)
s[b]=s[b]*2;
else if(a<0)
s[b]=s[b]+2;
}
max=s[1];
for(i=1;i<=n;i++)
if(max<s[i])
max=s[i];
printf("%d\n",max);
}
return 0;
}