洛谷 P4715 淘汰赛 / 思维题 / 连续两个比较找亚军

洛谷 P4715 淘汰赛
原来可以这么判断,我思维太死了,不敢想已学套路之外的做法.
思路:冠军和亚军一定是左边最强的和右边最强的这两个国家

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

struct node
{
   int energy;
   int id;
}a[1 << 10];
int n;

bool operator< (node a, node b)
{
     return a.energy < b.energy;
}

int main()
{
    cin >> n;
    for (int i = 0; i < (1 << n); i++ )
    {
        cin >> a[i].energy;
        a[i].id = i;
    }

    n = 1 << n;

    sort(a, a + n / 2), sort(a + n / 2 + 1, a + n);

    if (a[n / 2 - 1].energy < a[n - 1].energy) cout << a[n / 2 - 1].id + 1;
    else cout << a[n - 1].id + 1;

    return 0;
}
posted @ 2023-04-18 08:38  妃即  阅读(34)  评论(0)    收藏  举报