#include<bits/stdc++.h> using namespace std; struct cmptor { int tag; //表示序号。 int init; //表示初始值。 int cap; //能力值。 }cg[1000000]; bool cmp(cmptor a,cmptor b) { if(a.init==b.init)return a.tag<b.tag; //序号小的在前。 else return a.init>b.init; //初始值大的在前。 } int main() { int N=0,R=0,Q=0; //比赛组,比赛轮次,名次。 scanf("%d%d%d",&N,&R,&Q); for(int i=0;i<2*N;i++) { scanf("%d",&cg[i].init); //输入数值,以及初始化序号。 cg[i].tag=i+1; } for(int i=0;i<2*N;i++) { scanf("%d",&cg[i].cap); } stable_sort(cg,cg+2*N,cmp); //稳定排序保证值相同时不交换相对次序,速度比sort更快。 while(R) //每轮比赛根据能力值决定分数相近的选手谁得分。 { for(int i=0;i<2*N;i+=2) { if(cg[i].cap>cg[i+1].cap)cg[i].init+=1; else cg[i+1].init+=1; } stable_sort(cg,cg+2*N,cmp);//比完后根据分数再次排序,方便下一轮排序。 R--; } printf("%d",cg[Q-1].tag); //输出所求名次对应的序号。 return 0; }