#AT1711. C - ABC Tournament

C - ABC Tournament

C - ABC Tournament

得分:300分

问题描述

有$2^N$个选手,标号从1到$2^N$,将在一场单淘汰编程比赛中相互竞争。
选手$i$的等级是$A_i$。任意两个选手的等级不同,而且两个选手之间的比赛结果总是取决于等级较高的选手。

比赛形式是一颗完美二叉树。
具体而言,比赛流程如下:

  • 按照顺序进行,对于每个整数$i = 1, 2, 3, \dots, N$,做如下操作:
    • 对于整数$j (1 \le j \le 2^{N - i})$,在那些从未输过的选手中,标号为$(2j - 1)$和$2j$的选手进行比赛。

找出将会取得第二名的选手的标号,即在决赛中输掉的选手。

约束

  • $1 \le N \le 16$
  • $1 \le A_i \le 10^9$
  • $A_i$两两不同。
  • 输入中的所有值都为整数。

输入

从标准输入中以以下格式给出:

NN

A1A_1 A2A_2 A3A_3 \dots A2NA_{2^N}

输出

输出将会取得第二名的选手的标号。


2
1 4 2 5
2

首先,选手$1$和选手$2$之间进行一场比赛,选手$3$和选手$4$之间进行一场比赛。根据等级,选手$2$和选手$4$将获胜。
然后,选手$2$和选手$4$之间进行一场比赛,比赛结束时选手$4$成为冠军。
决赛中将会输掉的选手是选手$2$,所以我们应该输出$2$。


2
3 1 5 4
1

首先,选手$1$和选手$2$之间进行一场比赛,选手$3$和选手$4$之间进行一场比赛。根据等级,选手$1$和选手$3$将获胜。
然后,选手$1$和选手$3$之间进行一场比赛,比赛结束时选手$3$成为冠军。
决赛中将会输掉的选手是选手$1$,所以我们应该输出$1$。


4
6 13 12 5 3 7 10 11 16 9 8 15 2 1 14 4
2