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

邪王真眼知道吧,对的本题和邪王真眼没关系,但是我们要知道邪王真眼是最强的。。。

这题俺没用二叉树(绝对不是因为我不会啊QAQ)

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

AC代码:

#include 
#include 
using namespace std;

//用结构体来存放能量值和对应的下标
struct QAQ{  
    int en;// 能量值;
    int bn;// 下标; 
}ac[500];

int main()
  {
    int n; cin >> n;
    int t = pow(2,n);
    for(int i = 1;i <= t; i++){
        cin >> ac[i].en;
        ac[i].bn = i;
    }

  //最后所要保留的数据只有冠军和亚军
    while(t > 2){
        for(int i = 1,j = 1;i <= t; i += 2,j++){
                //i用来做两两比较,j用来顺序存放较大的一方
            if(ac[i].en  > ac[i + 1].en){
                ac[j].bn = ac[i].bn;
                ac[j].en = ac[i].en;
            }

            else{
                ac[j].bn = ac[i + 1].bn;
                ac[j].en = ac[i + 1].en;
            } 
        }

        t /= 2;
    }

    if(ac[1].en > ac[2].en) 
        cout << ac[2].bn;
    else cout << ac[1].bn;

    return 0;
}

你可能感兴趣的:(题解,c++,算法,开发语言)