題目描述
小灰灰和小東東在玩一種競技遊戲。在遊戲中,小灰灰給小東東由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;
}