AC

许诺  •  21小时前


include

include

include

using namespace std;

struct Player {

int id;
int score;
int strength;

};

bool comparePlayers(const Player &a, const Player &b) {

if (a.score != b.score) {
    return a.score > b.score;
} else {
    return a.id < b.id;
}

}

int main() {

ios::sync_with_stdio(false);
cin.tie(nullptr);

int N, R, Q;
cin >> N >> R >> Q;

vector<Player> players(2 * N);
for (int i = 0; i < 2 * N; ++i) {
    players[i].id = i + 1;
    cin >> players[i].score;
}
for (int i = 0; i < 2 * N; ++i) {
    cin >> players[i].strength;
}

sort(players.begin(), players.end(), comparePlayers);

vector<Player> winners(N);
vector<Player> losers(N);

for (int round = 0; round < R; ++round) {
    // Pair players and compete
    for (int i = 0; i < N; ++i) {
        Player &a = players[2 * i];
        Player &b = players[2 * i + 1];
        if (a.strength > b.strength) {
            a.score += 1;
            winners[i] = a;
            losers[i] = b;
        } else {
            b.score += 1;
            winners[i] = b;
            losers[i] = a;
        }
    }

    // Merge winners and losers
    int i = 0, j = 0, k = 0;
    while (i < N && j < N) {
        if (comparePlayers(winners[i], losers[j])) {
            players[k++] = winners[i++];
        } else {
            players[k++] = losers[j++];
        }
    }
    while (i < N) {
        players[k++] = winners[i++];
    }
    while (j < N) {
        players[k++] = losers[j++];
    }
}

cout << players[Q - 1].id << endl;

return 0;

}


评论:

请先登录,才能进行评论