代码如下:
#include<bits/stdc++.h>
using namespace std;
struct data{
int num,s,w;
}a[200005];
priority_queue<data>q;
data x[100005],y[100005];
bool operator < (data x,data y){
return x.s<y.s ||(x.s==y.s&&x.num>y.num);
}
int n,r,Q;
int main()
{
scanf("%d%d%d",&n,&r,&Q);
for(register int i=1;i<=2*n;i++)scanf("%d",&a[i].s),a[i].num=i;
for(register int i=1;i<=2*n;i++)scanf("%d",&a[i].w);
for(register int i=1;i<=n*2;i++)q.push(a[i]);
for(register int k=1;k<=r;k++)
{
for(register int i=1;i<=n;i++)
{
x[i]=q.top();
q.pop();
y[i]=q.top();
q.pop();
if(x[i].w>y[i].w)x[i].s+=1;
else y[i].s+=1;
}
for(register int i=1;i<=n;i++)q.push(x[i]),q.push(y[i]);
}
for(register int i=1;i<Q;i++)q.pop();
printf("%d",q.top().num);
}