[AtCoder] ABC 188 C – ABC Tournament

問題

方針

優勝する選手は一番レートが高いので、トーナメント表を前半の後半に分けたときにその選手がいる山の中から準優勝する選手は存在しません。したがって、山を分けたとき優勝する選手がいない山で一番レートが高い選手が準優勝することになります。

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    int N;
    cin >> N;
    int n = pow(2, N);
    int A[n];
    for (int i = 0; i < n; i++) {
        cin >> A[i];
    }
    int v1 = 0;
    int id1 = 0;
    int v2 = 0;
    int id2 = 0;
    for (int i = 0; i < n / 2; i++) {
        if (v1 < A[i]) {
            v1 = A[i];
            id1 = i + 1;
        }
    }
    for (int i = n / 2; i < n; i++) {
        if (v2 < A[i]) {
            v2 = A[i];
            id2 = i + 1;
        }
    }
    if (v1 < v2) {
        cout << id1 << "\n";
    } else {
        cout << id2 << "\n";
    }
    return 0;
}