补充:#1,#3,#6,#7 AC,其余WA
by jmsyang0808 @ 2024-01-16 15:12:26
@[jmsyang0808](/user/1202695) 应该是排序的问题,如果改成sort就只是TLE了[记录](https://www.luogu.com.cn/record/143022695)
by I_am_losser @ 2024-01-16 15:48:57
@[jmsyang0808](/user/1202695) 你可以尝试一下使用归并排序,对于这题的归并排序它只需要三个栈,给你贴一下代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
long long n,r,q;
struct v{
int s,w,id;
}a[10000000],al[10000000],aw[10000000];
bool cmp(v x,v y){
if(x.s==y.s)return x.id<y.id;
return x.s>y.s;
}
int main(){
cin>>n>>r>>q;
n*=2;
for(int i=1;i<=n;i++){
cin>>a[i].s;
a[i].id=i;
}
for(int i=1;i<=n;i++)cin>>a[i].w;
sort(a+1,a+n+1,cmp);
while(r--){
for(int i=1,j=1;i<n;i+=2,j++){
if(a[i].w>a[i+1].w||a[i].w==a[i+1].w&&a[i].id<a[i+1].id){
a[i].s++;
al[j]=a[i+1];
aw[j]=a[i];
}
else{
a[i+1].s++;
al[j]=a[i];
aw[j]=a[i+1];
}
}
for(int i=1,j=1,k=1;k<=n;k++){
if(i>n/2){
for(;k<=n;k++,j++)a[k]=al[j];
break;
}
if(j>n/2){
for(;k<=n;k++,i++)a[k]=aw[i];
break;
}
if(aw[i].s>al[j].s||aw[i].s==al[j].s&&aw[i].id<al[j].id){
a[k]=aw[i];
i++;
}
else{
a[k]=al[j];
j++;
}
}
}
cout<<a[q].id;
return 0;
}
```
以及[AC记录](https://www.luogu.com.cn/record/127414345)
by I_am_jocker @ 2024-01-16 15:52:19
@ I_am_losser ,You know,宁wa不t
by jmsyang0808 @ 2024-01-16 15:53:06
@[I_am_jocker](/user/1059074) ,万分感谢,AC了。会关。
by jmsyang0808 @ 2024-01-17 15:31:50