dark • 2年前
using namespace std; struct node{
int id,s,p;
}; bool cmp(node a,node b){
if(a.s==b.s) return a.id<b.id;
else return a.s>b.s;
} node p[200010],win[100010],lose[100010]; int n,r,q; int main(void){
cin>>n>>r>>q;
for(int i=1;i<=2*n;i++) cin>>p[i].s,p[i].id=i;
for(int i=1;i<=2*n;i++) cin>>p[i].p;
sort(p+1,p+1+2*n,cmp);
while(r--){
int t=1;
for(int i=1;i<=2*n;i+=2){
if(p[i].p>p[i+1].p){
p[i].s++;
win[t]=p[i];
lose[t]=p[i+1];
}else{
p[i+1].s++;
win[t]=p[i+1];
lose[t]=p[i];
}
t++;
}
int tl=1,tr=1,tt=1;
while(tl<=n&&tr<=n){
if(cmp(win[tl],lose[tr])) p[tt++]=win[tl++];
else p[tt++]=lose[tr++];
}
while(tl<=n) p[tt++]=win[tl++];
while(tr<=n) p[tt++]=lose[tr++];
}
cout<<p[q].id;
return 0;
}
评论:
请先登录,才能进行评论