Start: Jan, 08, 2019 19:01:00
2018年秋季学期程序设计基础(C语言)期末考试
End: Jan, 08, 2019 21:46:00
Time elapsed:
Time remaining:

Problem_ID: G
Result: Accepted
Time: 31ms
Memory: 1524kB
In contest: 1258

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
	char num[10];
	int gs;
	int cx;
	int xd;
	int z;
}xx;
int cmp(const void * a,const void * b)
{
	xx * pa=(xx *)a;
	xx * pb=(xx *)b;
	if(pa->z>pb->z)
		return -1;
	else if(pa->z<pb->z)
		return 1;
	else
	{
		if(pa->gs>pb->gs)
			return -1;
		else if(pa->gs<pb->gs)
			return 1;
		else
		{
			if(pa->cx>pb->cx)
				return -1;
			else if(pa->cx<pb->cx)
				return 1;
			else 
			{
				if(pa->xd>pb->xd)
					return -1;
				else if(pa->xd<pb->xd)
					return 1;
				else
				{
					return strcmp(pa->num,pb->num);
				}
			}
		}
	}
}
int main()
{
	xx stu[10000];
	char y[10];
	int n,q,f;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%s %d %d %d",stu[i].num,&stu[i].gs,&stu[i].cx,&stu[i].xd);
		stu[i].z=stu[i].gs+stu[i].cx+stu[i].xd;
	}
	scanf("%d",&q);
	int k=0;
	while(q--)
	{
		
		scanf("%d %s",&f,y);
		printf("Query #%d: %d %s\n",++k,f,y);
		if(f==1)
		{
			for(int i=0;i<n;i++)
			{
				if(strcmp(y,stu[i].num)==0)
				{
					printf("%d %d %d %d\n",stu[i].z,stu[i].gs,stu[i].cx,stu[i].xd);
					break;
				}
			}
		}
		else
		{
			double s=0;
			if(strcmp(y,"1")==0)
			{
				for(int i=0;i<n;i++)
				{
					s+=stu[i].gs;
				}
			}
			else if(strcmp(y,"2")==0)
			{
				for(int i=0;i<n;i++)
				{
					s+=stu[i].cx;
				}
			}
			else
			{
				for(int i=0;i<n;i++)
				{
					s+=stu[i].xd;
				}
			}
			printf("%.2f\n",s*1.0/n);
		}
	}
	qsort(stu,n,sizeof(xx),cmp);
	for(int i=0;i<n;i++)
	{
		printf("%s %d %d %d %d\n",stu[i].num,stu[i].z,stu[i].gs,stu[i].cx,stu[i].xd);
	}
	return 0;
}