40分求助》》》

P4715 【深基16.例1】淘汰赛

```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


|