求助(玄关)
  • 板块P1816 忠诚
  • 楼主Tiskan_H
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/8 16:22
  • 上次更新2024/7/8 17:26:16
查看原帖
求助(玄关)
1013837
Tiskan_H楼主2024/7/8 16:22

样例过了,但是零分求调

#include<iostream>
#define N 100010
using namespace std;

int db[18]={0,65536,32768,16384,8192,4096,2048,1024,512,256,128,64,32,16,8,4,2,1};
//int bd[18]={0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536};

int m,n;
int f[N][16];

int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++)
		cin>>f[i][0];
	for(int j=1;j<16;j++)
		for(int i=1;i<=m;i++)
			f[i][j]=min(f[i][j-1],f[i+(1<<(j-1))][j-1]);
	/*
	for(int i=1;i<=m;i++){
		for(int j=1;j<=15;j++)
			cout<<f[i][j]<<" ";
		cout<<endl;
	}
	*/
	for(int i=1;i<=n;i++){
		int a,b;
		cin>>a>>b;
		int j=1;
		while(j++){
			if(db[j]<=(b-1)){
				//cout<<j<<" "<<db[j]<<endl;
				break;
			}
		}
		cout<<min(f[a][16-j],f[b-(1<<(16-j))][16-j])<<" ";
	}
	return 0;
}
//1 2 3 4 5 6 7 8 9 10 --0
//                              
2024/7/8 16:22
加载中...