哪位大佬帮忙看看,不知道哪里错了
#include<iostream>
#include<algorithm>
using namespace std;
#define MAX int(2*1e5+5)
struct y{
int s, m, b;
};
bool cmp(y a, y b) {
return a.m > b.m;
}
y w[MAX / 2], l[MAX / 2], a[MAX];
void max(y &a, y &b, int i) {
if (a.s < b.s) {
b.m++;
w[i] = b;
l[i] = a;
}
else {
a.m++;
w[i] = a;
l[i] = b;
}
}
int main() {
int n, r, q;
cin >> n >> r >> q;
for (int i = 0; i < 2 * n; i++)
cin >> a[i].m;
for (int i = 0; i < 2 * n; i++)
cin >> a[i].s, a[i].b=i;
sort(a, a + 2 * n, cmp);
while (r--) {
for (int i = 0; i < n; i++)
max(a[i * 2], a[i * 2 + 1], i);
int i = 0, j = 0, k = 0;
while (i < n && j < n) {
if (w[i].m > l[j].m)
a[k++] = w[i++];
else
a[k++] = l[j++];
}
while (i < n)
a[k++] = w[i++];
while (j < n)
a[k++] = l[j++];
}
cout << a[q - 1].b + 1;
return 0;
}