Result: Accepted
Time: 36ms
Memory: 1560kB
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Student{
char xh[10];
int gs,c,xd,zf;
}st;
int cmp(const void *a,const void *b)
{
st *p=(st *)a;
st *q=(st *)b;
if(p->zf > q->zf)
{
return -1;
}
else if(p->zf < q->zf)
{
return 1;
}
else{
if(p->gs > q->gs)
{
return -1;
}
else if(p->gs < q->gs)
{
return 1;
}
else
{
if(p->c > q->c)
{
return -1;
}
else if(p->c < q->c)
{
return 1;
}
else
{
if(p->xd > q->xd)
{
return -1;
}
else if(p->xd < q->xd)
{
return 1;
}
else
{
if(strcmp(p->xh,q->xh)<0)
{
return -1;
}
else
{
return 1;
}
}
}
}
}
}
int main()
{
st a[11000];
int n,i,q,y,ch,j;
char x[110];
double sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d %d %d",a[i].xh,&a[i].gs,&a[i].c,&a[i].xd);
a[i].zf=a[i].gs+a[i].c+a[i].xd;
}
scanf("%d",&q);
for(i=1;i<=q;i++)
{
sum=0;
scanf("%d",&ch);
if(ch==1)
{
scanf("%s",x);
for(j=0;j<n;j++)
{
if(strcmp(x,a[j].xh)==0)
{
printf("Query #%d: %d %s\n",i,ch,x);
printf("%d %d %d %d\n",a[j].zf,a[j].gs,a[j].c,a[j].xd);
}
}
}
else if(ch==2)
{
scanf("%d",&y);
{
if(y==1)
{
for(j=0;j<n;j++)
{
sum=sum+a[j].gs;
}
printf("Query #%d: %d %d\n",i,ch,y);
printf("%.2f\n",sum*1.0/n);
}
else if(y==2)
{
for(j=0;j<n;j++)
{
sum=sum+a[j].c;
}
printf("Query #%d: %d %d\n",i,ch,y);
printf("%.2f\n",sum*1.0/n);
}
else if(y==3)
{
for(j=0;j<n;j++)
{
sum=sum+a[j].xd;
}
printf("Query #%d: %d %d\n",i,ch,y);
printf("%.2f\n",sum*1.0/n);
}
}
}
}
qsort(a,n,sizeof(st),cmp);
for(i=0;i<n;i++)
{
printf("%s %d %d %d %d\n",a[i].xh,a[i].zf,a[i].gs,a[i].c,a[i].xd);
}
return 0;
}