J — Ball King(线段树||打表||暴力)

1.PNG

 2.PNG

 3.PNG

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;
}

猜你喜欢

转载自blog.csdn.net/qq_41555192/article/details/82152498