6050:竞技游戏

来源:互联网 发布:天天淘宝 编辑:程序博客网 时间:2024/04/28 16:13

题目描述

小灰灰小东东在玩一种竞技游戏。在游戏中,小灰灰小东东由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;}


 

0 0
原创粉丝点击