爸爸们,大佬们,看看有哪儿有问题,有一个过不了,显示答案错误,谢谢
#include <iostream>
#include <algorithm>
using namespace std;
int n, r, q;
int s[200010], w[200010];
int id[200010], win[200010], lose[200010];
int sw, sl;
bool cmp(int x, int y) {
if (s[x] == s[y])
return x < y;
return s[x] > s[y];
}
void merge() {
int i = 1, j = 1, k = 1;
while (i <= sw && j <= sl) {
if (cmp(win[i], lose[j]))
id[k++] = win[i++];
else
id[k++] = lose[j++];
}
while (i <= sw)
id[k++] = win[i++];
while (j <= sl)
id[k++] = lose[j++];
}
int main() {
cin >> n >> r >> q;
n *= 2;
for(int i = 1; i <= n; i++)
id[i] = i;
for(int i = 1; i <= n; i++)
cin >> s[i];
for(int i = 1; i <= n; i++)
cin >> w[i];
sort(id + 1, id + n + 1, cmp);
while(r--) {
sw = sl = 1;
for(int i = 1; i <= n; i += 2) {
int a = w[id[i]], b = w[id[i + 1]];
if(a > b) {
s[id[i]]++;
win[sw++] = id[i];
lose[sl++] = id[i + 1];
}
else {
s[id[i + 1]]++;
lose[sl++] = id[i];
win[sw++] = id[i + 1];
}
}
merge();
}
cout << id[q] << endl;
return 0;
}