WA #3 求助
查看原帖
WA #3 求助
850498
__erinww楼主2023/4/27 17:21

代码

#include <stdio.h>

#define MAXN 128
#define max(x,y) (x>y)?x:y
#define min(x,y) (x<y)?x:y

int n,STEP,w[MAXN+1],a[MAXN+1];
const signed _2[] = {1,2,4,8,16,32,64,128};

signed DFS(int l,int r,int x){
	if(x > n+2)
		return 0;
	if(l == r+1 || l == r-1)
		return max(w[l],w[r]);
	
	int step = max(DFS(l,(l+r)/2,x+1),DFS((l+r)/2+1,r,x+1));
	
	return step;
}

signed main(){
	scanf("%d",&n);
	
	for(int i = 1;i <= _2[n];i ++)
		scanf("%d",&w[i]);
	n = _2[n];
	STEP = min(DFS(1,n/2,0),DFS(n/2+1,n,0));
	
	for(int i = 1;i <= n;i ++)
		if(STEP == w[i])
			return printf("%d",i),0;

	return 0;
}
2023/4/27 17:21
加载中...