|
- #include<iostream>
- #include<algorithm>
- using namespace std;
- struct stu{int s,w,ran;}st[220000],win[120000],lose[120000];
- int n,r,q,i,j,ii,jj;
- bool mycomp(stu x,stu y)
- {
- return (x.s==y.s)?(x.ran<y.ran):(x.s>y.s);
- }
- int main()
- {
- cin>>n>>r>>q;
- for(i=1;i<=2*n;i++) cin>>st[i].s;
- for(i=1;i<=2*n;i++) cin>>st[i].w;
- for(i=1;i<=2*n;i++) st[i].ran=i;
- sort(st+1,st+1+2*n,mycomp);
- /// for(i=1;i<=2*n;i++)cout<<st[i].ran<<" ";
- for(i=1;i<=r;i++)
- {
- ii=0;jj=0;
- for(j=1;j<=2*n;j+=2)
- {
- if(st[j].w<st[j+1].w)
- {
- st[j+1].s++;
- win[++ii].s=st[j+1].s;
- win[ii].w=st[j+1].w;
- win[ii].ran=st[j+1].ran;
- lose[++jj].s=st[j].s;
- lose[jj].w=st[j].w;
- lose[jj].ran=st[j].ran;
- }
- else
- {
- st[j].s++;
- win[++ii].s=st[j].s;
- win[ii].w=st[j].w;
- win[ii].ran=st[j].ran;
- lose[++jj].s=st[j+1].s;
- lose[jj].w=st[j+1].w;
- lose[jj].ran=st[j+1].ran;
- }
- }
- int lo=1,wi=1,k=1;
- while(lo<=n&&wi<=n)
- {
- if(mycomp(win[wi],lose[lo]))
- {
- st[k].s=win[wi].s;
- st[k].w=win[wi].w;
- st[k].ran=win[wi].ran;
- k++;wi++;
- }
- else
- {
- st[k].s=lose[lo].s;
- st[k].w=lose[lo].w;
- st[k].ran=lose[lo].ran;
- k++;lo++;
- }
- }
- while(wi<=n)
- {
- st[k].s=win[wi].s;
- st[k].w=win[wi].w;
- st[k].ran=win[wi].ran;
- k++;wi++;
- }
- while(lo<=n)
- {
- st[k].s=lose[lo].s;
- st[k].w=lose[lo].w;
- st[k].ran=lose[lo].ran;
- k++;lo++;
- }/*
- for(int o=1;o<=n+n;o++)
- cout<<st[o].s<<" "<<st[o].ran<<endl;
- cout<<endl;*/
- }
- cout<<st[q].ran;
- return 0;
- }
复制代码 |
|