//
// Created by SYSZY on 2022/5/1.
//

include
#include

using namespace std**;

struct Comp {
int ab
;
int score;
int index;

  1. **bool operator<(const Comp &b) const {<br /> return score == b.score ? index > b.index : score < b.score**;<br /> **}<br />} ct[**200005**]**, **tmp[**200005**]**;

int n, r, q;

int main() {
int t
;
cin >> t;
while (t—) {
cin >> n >> r >> q
;
for (int i = 0; i < 2 * n; i++) {
ct[i].index = i +
1;
cin >> ct[i].score;
}
for (int i =
0; i < 2 * n; i++) {
cin >> ct[i].ab
;
}
sort(ct
, ct + 2 * n);
for (int round = 1; round <= r; round++) {
int la =
0, ra = n;
for (int i = 0; i < 2 * n; i += 2) {
if (ct[i].ab < ct[i +
1].ab) {
ct[i +
1].score++;
tmp[la] = ct[i + 1], la++;
tmp[ra] = ct[i], ra++;
} else {
ct[i].score++
;
tmp[la] = ct[i], la++;
tmp[ra] = ct[i + 1], ra++;
}
}
int lb =
0, rb = n, cnt = 0;
while (lb < la && rb < ra) {
if (tmp[lb].score == tmp[rb].score) {
if (tmp[lb].index < tmp[rb].index)
ct[cnt] = tmp[lb]
, cnt++, lb++;
else
ct[cnt] = tmp[rb]
, cnt++, rb++;
} else if (ct[lb].score > ct[rb].score)
ct[cnt] = tmp[lb]
, cnt++, lb++;
else
ct[cnt] = tmp[rb]
, cnt++, rb++;
}
while (lb < la)
ct[cnt] = tmp[lb]
, cnt++, lb++;
while (rb < ra)
ct[cnt] = tmp[rb]
, cnt++, rb++;
}
cout << ct[q -
1].index << endl;
}
return
0;
**}

image.pngimage.pngimage.png