求调20pts WA #2,3,4,5,7,8,9,10,壶关
查看原帖
求调20pts WA #2,3,4,5,7,8,9,10,壶关
1266200
gin23楼主2024/8/4 00:05
#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了

2024/8/4 00:05
加载中...