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: 1532kB
In contest: 1258

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct nn
{
	char xh[6];int gs,acm,xd,sum,xh1;
}nn;
int cmp(const void*p,const void*q)
{
	nn*a=(nn*)p;
	nn*b=(nn*)q;
	if(a->sum!=b->sum)return b->sum-a->sum;
	else if	(a->gs!=b->gs)return b->gs-a->gs;
	else if	(a->acm!=b->acm)return b->acm-a->acm;
	else if (a->xd!=b->xd)return b->xd-a->xd;
	else return a->xh1-b->xh1;
}
int main()
{
	struct nn m[10001];
	int n,i,j,q,xq,k,w,num=0;double pjf;char x[6];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",&m[i].xh);getchar();
		scanf("%d %d %d",&m[i].gs,&m[i].acm,&m[i].xd);
		m[i].sum=m[i].gs+m[i].xd+m[i].acm;
		m[i].xh1=((int)m[i].xh[0]-48)*10000+((int)m[i].xh[1]-48)*1000+((int)m[i].xh[2]-48)*100+((int)m[i].xh[3]-48)*10+((int)m[i].xh[4]-48);
	}
	scanf("%d",&q);
	for(j=0;j<q;j++)
	{
		scanf("%d",&xq);
		if(xq==1)
		{
			scanf("%s",&x);
			for(i=0;i<n;i++)
			{
				if(strcmp(x,m[i].xh)==0)k=i;
			}
			printf("Query #%d: %d %s\n",j+1,xq,x);
			printf("%d %d %d %d\n",m[k].sum,m[k].gs,m[k].acm,m[k].xd);
		}
		else if(xq==2)
		{
			scanf("%d",&w);pjf=0;
			for(i=0;i<n;i++)
			{
				if(w==1)pjf+=m[i].gs;
				else if(w==2)pjf+=m[i].acm;
				else if(w==3)pjf+=m[i].xd;
			}
			pjf=(double)pjf/n;
			printf("Query #%d: %d %d\n",j+1,xq,w);
			printf("%.2f\n",pjf);
		}
	}
	qsort(m,n,sizeof(m[0]),cmp);
	for(i=0;i<n;i++)
	{
		printf("%s %d %d %d %d\n",m[i].xh,m[i].sum,m[i].gs,m[i].acm,m[i].xd);
	}
}