Result: Accepted
Time: 31ms
Memory: 1532kB
#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);
}
}