Result: Accepted
Time: 1250ms
Memory: 1252kB
#include<stdio.h>
#include<string.h>
int main(void)
{
struct sb
{
char ch[10];
int a[4];
}f;
struct sb d[10010];
int n,i,q;
scanf("%d",&n);
getchar();
for(i=0;i<n;++i){
scanf("%s%d%d%d",d[i].ch,&d[i].a[1],&d[i].a[2],&d[i].a[3]);
getchar();
}
scanf("%d",&q);
char ch1[10];
int e,j=1;
while(q--)
{
double sum=0;
scanf("%d %s",&e,ch1);
if(e==1)
{
printf("Query #%d: 1 %s\n",j,ch1);
for(i=0;i<n;++i)
{
if(strcmp(ch1,d[i].ch)==0)
{
printf("%d %d %d %d\n",d[i].a[1]+d[i].a[2]+d[i].a[3],d[i].a[1],d[i].a[2],d[i].a[3]);
break;
}
}
}
else if(e==2)
{
printf("Query #%d: 2 %s\n",j,ch1);
if(strcmp(ch1,"1")==0)
{
for(i=0;i<n;++i)
{
sum+=d[i].a[1];
}
}
else if(strcmp(ch1,"2")==0)
{
for(i=0;i<n;++i)
{
sum+=d[i].a[2];
}
}
else if(strcmp(ch1,"3")==0)
{
for(i=0;i<n;++i)
{
sum+=d[i].a[3];
}
}
printf("%.2f\n",sum/n*1.0);
}
++j;
}
for(i=0;i<n;++i)
d[i].a[0]=d[i].a[1]+d[i].a[2]+d[i].a[3];
for(i=1;i<n;++i)
{
for(j=0;j<n-i;++j)
{
if(d[j].a[0]<d[j+1].a[0])
{
f=d[j];
d[j]=d[j+1];
d[j+1]=f;
}
else if(d[j].a[0]==d[j+1].a[0]&&d[j].a[1]<d[j+1].a[1])
{
f=d[j];
d[j]=d[j+1];
d[j+1]=f;
}
else if(d[j].a[0]==d[j+1].a[0]&&d[j].a[1]==d[j+1].a[1]&&d[j].a[2]<d[j+1].a[2])
{
f=d[j];
d[j]=d[j+1];
d[j+1]=f;
}
else if(d[j].a[0]==d[j+1].a[0]&&d[j].a[1]==d[j+1].a[1]&&d[j].a[2]==d[j+1].a[2]&&d[j].a[3]<d[j+1].a[3])
{
f=d[j];
d[j]=d[j+1];
d[j+1]=f;
}
else if(d[j].a[0]==d[j+1].a[0]&&d[j].a[1]==d[j+1].a[1]&&d[j].a[2]==d[j+1].a[2]&&d[j].a[3]==d[j+1].a[3]&&strcmp(d[j].ch,d[j+1].ch)>0)
{
f=d[j];
d[j]=d[j+1];
d[j+1]=f;
}
}
}
for(i=0;i<n;++i)
{
printf("%s %d %d %d %d\n",d[i].ch,d[i].a[0],d[i].a[1],d[i].a[2],d[i].a[3]);
}
return 0;
}