许诺 • 21小时前
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;
}
评论:
请先登录,才能进行评论