代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct go{//结构体
long long b,f,s;
}w[10000005],l[10000005],a[10000005];//定义数组
bool cmp(const go &x,go &y){//结构体快排
if(x.f==y.f) return x.b<y.b;
return x.f>y.f;
}
int main(){
int n,r,q,k,j;//定义
cin>>n>>r>>q;//输入
for(int i=1;i<=2*n;i++){//有2*n个人
cin>>a[i].f;//输入分数
a[i].b=i;//每个人都有编号
}
for(int i=1;i<=2*n;i++){
cin>>a[i].s;//输入实力值
}
sort(a+1,a+1+2*n,cmp);//快排
while(r--){//一共有r场比赛
for(int i=1;i<=2*n;i++){
cout<<a[i].f<<"t";
}
cout<<endl;
for(int i=1;i<=2*n;i++){
cout<<a[i].b<<"g";
} cout<<endl;
k=0;
for(int i=1;i<=2*n;i+=2){
if(a[i].s>a[i+1].s){//a[i]赢了
k++;
w[k]=a[i];//1号赢了
l[k]=a[i+1];//2号输了
a[i].f+=1;//加一分
}
else if(a[i].s<a[i+1].s){//a[i+1]赢了
k++;
l[k]=a[i];//1号输了
w[k]=a[i+1];//2号赢了
a[i+1].f+=1;//加一分
}
}
int s=1,y=1,z=1;
while(s<=k&&y<=k){//两队有一队空了
if(w[y].f>l[s].f){//赢得分大于输的分
a[z]=w[y];//赢得在先
z++;//总数+1
y++;//赢得编号+1
}
else if(w[y].f<l[s].f){//输大于赢
a[z]=l[s];//输的在先
z++;
s++;
}
else if(w[y].f==l[s].f){//两队分数相等
if(w[y].b<l[s].b){//赢的编号小
a[z]=w[y];//赢得先
z++;
y++;
}
else{
a[z]=l[s];//输的先
z++;
s++;
}
}
}
while(k>=y){
a[z]=w[y];
y++;
z++;
}
while(k>=s){
a[z]=l[s];
s++;
z++;
}
}
cout<<a[q].b;
return 0;
}
这那里错了呀,能帮忙改一下更好