Sample Input 1
1 2 2 2 1 0 2 1 1
Sample Output 1
2 1
#include<iostream>
#include<cstring>
using namespace std;
const int M=1e5+10;
int a[20][M];
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n,q;
scanf("%d%d",&n,&q);
memset(a,0,sizeof(a));
for(int i=0;i<n;i++){
scanf("%d",&a[0][i]);
}
for(int i=1;i<20;i++){//最多比16轮(0<=u<=16)
for(int j=0;j<=n/2+1;j++){//加 1是为了防止 n为奇数
a[i][j]=max(a[i-1][2*j],a[i-1][2*j+1]);
}
}
while(q--){
int u,v;
scanf("%d%d",&u,&v);
for(int i=0;i<n;i++){
if(a[u][v-1]==a[0][i]){
printf("%d\n",i+1);
}
}
}
}
return 0;
}