思路:没有修改,只有询问操作,可以RMQ,线段树等各种方法,当然也可以暴力



#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int a[maxn];
int main()
{
    int T;
	scanf("%d",&T);
	while(T--)
	{
        int n;
		scanf("%d",&n);
		for(int i = 1;i<=n;i++)
			scanf("%d",&a[i]);
		int q;
		scanf("%d",&q);
		while(q--)
		{
			int l,r,ans=-1;
			scanf("%d%d",&l,&r);
			for(int i = l;i<=r;i++)
                ans = max(ans,a[i]);
			printf("%d\n",ans);
		}
	}
}






Description




 representing the size of the water source. Given a set of queries each containing 


 integers 


 and 


, please find out the biggest water source between 


 and 


.


Input


 indicating the number of test cases. For each test case, there is a number 


on a line representing the number of water sources. 


 integers follow, respectively 


, and each integer is in 


. On the next line, there is a number 


 representing the number of queries. After that, there will be 


 lines with two integers 


 and 



Output


For each query, output an integer representing the size of the biggest water source.


Sample Input


31100 1 1 1 5 1 2 3 4 5 5 1 2 1 3 2 4 3 4 3 5 3 1 999999 1 4 1 1 1 2 2 3 3 3


Sample Output


10023 4 4 5 1 999999 999999 1