思路:没有修改,只有询问操作,可以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