可以用模拟的思路来处理这个问题。 Tip:当lar为奇数时,显然seq中要出一个数与其配对,配对结果是lar保留,seq被减一。


#include<iostream>
#include<algorithm>
using namespace std;

int main(){
#ifdef LOCAL
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
    int n;
    cin>>n;
    int seq=0;
    int tem;
    int me;
    cin>>me;
    for(int i=1;i<n;++i){
        cin>>tem;
        if(me>=tem){
            ++seq;
        }
    }
    int ans=0;
    int lar=n-1-seq;
    while(seq>0){
        if(lar&1){
            if(seq==1){
                break;
            }
            ++lar;//special,
            --seq;
        }
        lar>>=1;
        --seq;
        seq>>=1;
        ++ans;
    }
    cout<<ans;

}