ZJU PAT 1012

#include <stdio.h>
#include <string.h>
#define MAX_NUM 0x7fffffff
typedef struct Stu{
       char ID[10];
       double score[4];
       int best_rank;
       int best_course;
}Stu;
Stu stu[1000000];
int N,M;
char map[]={'C','M','E','A'};
int main()
{
       int i;
       scanf("%d%d",&N,&M);
       for(i=0;i<N;i++){
               scanf("%s%lf%lf%lf",&stu[i].ID,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

               stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
       }
       int rank[4]={1,1,1,1};
       for(i=0;i<N;i++){
               int rank[4]={1,1,1,1};
               int j,k;
               for(j=0;j<N;j++){
                       for(k=0;k<4;k++){
                               if(i!=j&&stu[j].score[k]>stu[i].score[k])
                                       rank[k]++;
                       }
               }
               int best_rank=MAX_NUM;
               int best_course=MAX_NUM;
               for(j=0;j<4;j++){
                       if(rank[j]<best_rank){
                                       best_rank=rank[j];
                                       best_course=j;
                               }
                       else if(rank[j]==best_rank){
                               if(j==3||j<best_course){
                                       best_course=j;
                               }
                       }
               }
               stu[i].best_rank=best_rank;
               stu[i].best_course=best_course;
       }
       for(i=0;i<M;i++){
               char search[10];
               scanf("%s",&search);
               int j=0;
               for(;j<N;j++){
                       if(strcmp(stu[j].ID,search)==0){
                               printf("%d %c\n",stu[j].best_rank,map[stu[j].best_course]);
                               break;
                       }
               }
               if(j==N)
                       printf("N/A\n");
       }
}

posted @ 2011-10-09 09:47  linyvxiang  阅读(130)  评论(0编辑  收藏  举报