题解11ms
2025-06-04 12:41:21
发布于:浙江
2阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Player {
int id;
int score;
int strength;
};
bool compare(const Player &a, const Player &b) {
if (a.score != b.score) return a.score > b.score;
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(), compare);
vector<Player> winners(N), losers(N);
for (int round = 0; round < R; ++round) {
int w = 0, l = 0;
for (int i = 0; i < 2 * N; i += 2) {
if (players[i].strength > players[i+1].strength) {
players[i].score++;
winners[w++] = players[i];
losers[l++] = players[i+1];
} else {
players[i+1].score++;
winners[w++] = players[i+1];
losers[l++] = players[i];
}
}
merge(winners.begin(), winners.end(), losers.begin(), losers.end(),
players.begin(), compare);
}
cout << players[Q-1].id << endl;
return 0;
}
这里空空如也
有帮助,赞一个