考虑用大根堆来优化取 max 操作.
理论上来说如果想要卡第 n 个数 an 的最坏情况(取堆顶 n−1 次)就需要前面 n−1 个数的二进制下各个位置都与 an 不同 .
显然若 an=(100000000)2 时有 28 个数字可以选择 但是为了构造最坏情况 an−1 应该取 (10000000)2 那剩下的 n−3 个数字只有 27 个数字可以选择.
那同样构造最坏情况 an−2 应该为 (1000000)2.
以此类推复杂度应该是 O(nlog2n) 但是我总是感觉哪里怪怪的 求大佬指正一下