题意:找区间最大值
思路:签到题,题量很小直接模拟,细心一点别出bug就ok(我竟然还多此一举的ans数组保存答案来优化)
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cmath>
using namespace std;
int num[1009];
int ans[1009];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t;
cin>>t;
while(t--)
{
memset(ans,0,sizeof(ans));
memset(num,0,sizeof(num));
int n,q,ma=0,l,r;
scanf("%d",&n);
if(!n) continue;
for(int i=0;i<n;i++) scanf("%d",&num[i]);
for(int i=0;i<n;i++) {
if(num[i]>ma) {ma=num[i]; ans[i]=ma;}
else ans[i]=ans[i-1];
}
//for(int i=0;i<n;i++) cout<<ans[i]<<" "; cout<<endl;
scanf("%d",&q);
if(!q) continue;
for(int i=1;i<=q;i++){
scanf("%d%d",&l,&r);
if(l==r) printf("%d\n",num[r-1]);
else if(ans[r-1]!=ans[l-2])
printf("%d\n",ans[r-1]);
else {
ma=0;
for(int i=l-1;i<=r-1;i++)
ma=max(ma,num[i]);
printf("%d\n",ma);
}
}
}
}