```cpp
for(int i=1;i<=m;i++){
if(a[i]==k){
cout<<i;
return 0;
}
}
```
可似你之前的 while 已经把 m 变成 2 了捏。
by Wind_Leaves_ShaDow @ 2023-10-12 19:01:39
@[XBHXXX](/user/756145)
by Wind_Leaves_ShaDow @ 2023-10-12 19:01:53
```cpp
for(int i=1;i<=m;i++){
if(a[i]==k){
cout<<i;
return 0;
}
}
```
有可能没输出
by BGM114514 @ 2023-10-12 19:02:29
[改回来就 A 了捏](https://www.luogu.com.cn/problem/P4715)
随便怎么改,只要循环里的 m 是原来的 m 就行(比如说再填一个 ```pow(2,n)```)
by Wind_Leaves_ShaDow @ 2023-10-12 19:03:06
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,m,l,k,s;
long long a[100000],b[100000];
int main(){
cin>>n;
m=pow(2,n);
s=m;
for(int i=1;i<=m;i++){
cin>>a[i];
b[i]=a[i];
}
while(m!=2){
for(int i=1;i<=m;i+=2){
l++;
b[l]=max(b[i],b[i+1]);
}
l=0;
m=m/2;
}
k=min(b[1],b[2]);
for(int i=1;i<=s;i++){
if(a[i]==k){
cout<<i;
return 0;
}
}
return 0;
}
```
by BGM114514 @ 2023-10-12 19:03:53
感谢两位!成功A了(:感谢感谢感谢(重要的事情说三遍!)
by XBHXXX @ 2023-10-12 19:16:14