p4715 建议降红
  • 板块题目总版
  • 楼主brbrbread
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/6/2 17:02
  • 上次更新2024/6/2 19:41:42
查看原帖
p4715 建议降红
1145108
brbrbread楼主2024/6/2 17:02

这一道题左看右看,想到了一种超级简单的解法 废话不说,来看看我的思路(题目太水了)

#include <bits/stdc++.h>
using namespace std;
int n,a[130],aa[130]; 
int main(){
	cin>>n;//基本的输入输出
	int m=1;
	for(int i=1;i<=n;i++){
		m*=2;
	}//也可以用pow()但是这样保险一点
	for(int i=1;i<=m;i++){
		cin>>a[i];
		aa[i]=a[i];
	}
	sort(a,a+m/2+1);//先整理左半部分
	int v[130];
	for(int i=m;i>m/2;i--){
		v[i-(m/2)]=aa[i];//给V赋值
	}
	sort(v,v+m/2+1);
	for(int i=1;i<=m;i++){
		if(aa[i]==a[m/2]&&a[m/2]<v[m/2]){//判断是不是在左半部分
			cout<<i;
			break;
		}
	}
	if(a[m/2]>v[m/2]){//若不是则判断右半部分
		for(int i=1;i<=m;i++){
			if(aa[i]==v[m/2]){
				cout<<i;
				break;
			}
		}
	}
	return 0; 
}
2024/6/2 17:02
加载中...