#include<iostream> #include<algorithm> using namespace std; const int N(100005); struct node { int num,score,shili; }; node a[2*N],win[N],lose[N]; bool comp(const node &x,const node &y) { if (x.score!=y.score) return x.score>y.score; //分数不同,按分数排序 return x.num<y.num; //分数相同,按编号排序 } void swiss(int n) { int i,j,k; for (k=i=j=1;k<=n;k++) if (a[2*k-1].shili>a[2*k].shili) a[2*k-1].score++,win[i++]=a[2*k-1],lose[j++]=a[2*k]; else a[2*k].score++,win[i++]=a[2*k],lose[j++]=a[2*k-1]; for (k=i=j=1;i<=n&&j<=n;k++) if (comp(win[i],lose[j])) a[k]=win[i],i++; else a[k]=lose[j++]; while (i<=n) a[k++]=win[i++]; while (j<=n) a[k++]=lose[j++]; } int main() { int n,r,q; cin>>n>>r>>q; for (int i=1;i<=2*n;i++) a[i].num=i; for (int i=1;i<=2*n;i++) cin>>a[i].score; for (int i=1;i<=2*n;i++) cin>>a[i].shili; sort(a+1,a+2*n+1,comp); for (int i=0;i<r;i++) swiss(n); cout<<a[q].num<<endl; //system("pause"); return 0; } /************************************************************** Problem: 2302 User: admin Language: C++ Result: Accepted Time:1149 ms Memory:6764 kb ****************************************************************/