#include<stdio.h>
#include<stdlib.h>
typedef struct score{
int num;
int s;
}score;
int cmp(const void *a,const void *b) {
if((*(score*)b).s!=(*(score*)a).s)
{
return (*(score*)b).s-(*(score*)a).s;
}
else
{
return (*(score*)b).num-(*(score*)a).num;
}
}
void SwitzerlandGameForRound(score st[],int w[],int N);
int SwitzerlandGame(score st[],int w[],int N,int r,int q);
int main()
{
int n,r,q;
scanf("%d",&n);
scanf("%d",&r);
scanf("%d",&q);
int N;
N=2*n;
int w[N+1];
score st[N+1];
for(int i=1;i<=N;i++)
{
scanf("%d",&st[i].s);
st[i].num=i;
}
st[0].num=0;
st[0].s=-1;
for(int i=1;i<=N;i++)
{
scanf("%d",&w[i]);
}
w[0]=-1;
int ans;
ans=SwitzerlandGame(st,w,N,r,q);
printf("%d",ans);
return 0;
}
void SwitzerlandGameForRound(score st[],int w[],int N)
{
qsort(st, N+1, sizeof(score), cmp);
for(int i=0;i<N;)
{
if(w[st[i].num]>w[st[i+1].num])
{
st[i].s++;
}else
{
st[i+1].s++;
}
i+=2;
}
}
int SwitzerlandGame(score st[],int w[],int N,int r,int q)
{
for(int i=0;i<r;i++)
{
qsort(st, N+1, sizeof(score), cmp);
for(int i=0;i<N;)
{
if(w[st[i].num]>w[st[i+1].num])
{
st[i].s++;
}else
{
st[i+1].s++;
}
i+=2;
}
}
return st[q-1].num;
}
感觉是没开long long 的原因,但是结构体里的s和w数组开了long long 就TLE了