线段树20分只过了第三个点求调
查看原帖
线段树20分只过了第三个点求调
1111300
ayszYW楼主2024/3/21 19:14

如题

#include<bits/stdc++.h>
using namespace std;
int arr[101000],n,ans=0;
int bi=1;


struct Cy{
	int l,r,minn,ld;
}t[100100*4+1];

void fuckbuild(int a,int b,int k){
	t[k].l=a,t[k].r=b;
	if(t[k].l==t[k].r){
		t[k].minn=arr[bi];
		bi++;
		return;
	}
	int m=(a+b)/2;
	fuckbuild(a,m,2*k);
	fuckbuild(m+1,b,2*k+1);
	t[k].minn=max(t[2*k].minn,t[2*k+1].minn);
}





int main(){
	cin>>n;
	int r=pow(2,n);
	for(int i=1;i<=r;i++){
		cin>>arr[i];
	}
	fuckbuild(1,r,1);
//	for(int i=1;i<=4*n;i++){
//	
//		cout<<t[i].minn<<" ";
//	}
//	cout<<t[2].minn<<t[3].minn;
	int st=min(t[3].minn,t[2].minn);
	
	for(int i=1;i<=n;i++){
		if(arr[i]==st){
			cout<<i;
			return 0;
		}
	}	
	
	
	
	
}
2024/3/21 19:14
加载中...