首页 > 代码库 > 1075. PAT Judge (25)

1075. PAT Judge (25)

  1 #include <stdio.h>  2 #include <algorithm>  3 using namespace std;  4   5 struct MyStruct  6 {  7     int grade[6];  8     int Done[6];  9     int Perfect; 10     int sum; 11     int ID; 12     int num; 13 }; 14  15 int cmp(MyStruct a,MyStruct b) 16 { 17     if(a.sum != b.sum ) return a.sum > b.sum; 18     if(a.Perfect != b.Perfect) return a.Perfect > b.Perfect; 19     return a.ID < b.ID; 20 } 21  22 MyStruct Student[10001]; 23 MyStruct SqueStu[10001]; 24 int main() 25 { 26     int StuNum,ProNum,SubNum; 27     int ProValue[6]; 28     int i,j; 29     while(scanf("%d %d %d",&StuNum,&ProNum,&SubNum)!=EOF) 30     { 31         for(i=1;i<=StuNum;i++) 32         { 33             for(j=1;j<=5;j++) 34             { 35                 Student[i].grade[j]=-1; 36                 Student[i].Done[j]=0; 37             } 38             Student[i].Perfect=0; 39         } 40         getchar(); 41         for(i = 1;i<=ProNum;i++) 42             scanf("%d",&ProValue[i]); 43  44         for(i=1;i<=SubNum;i++) 45         { 46             getchar(); 47             int TemID,TemProID,TemGrade; 48             scanf("%d %d %d",&TemID,&TemProID,&TemGrade); 49             if(TemGrade == -1) TemGrade = 0; 50             else Student[TemID].Done[TemProID] = 1; 51             if(TemGrade>Student[TemID].grade[TemProID]) 52             { 53                 Student[TemID].grade[TemProID]=TemGrade; 54                 Student[TemID].ID = TemID;  55                 if(TemGrade == ProValue[TemProID]) Student[TemID].Perfect++; 56             } 57         } 58  59         int SqueStuNum=0; 60         for(i=1;i<=StuNum;i++) 61         { 62             int Temsum=0; 63             int IfPrint = 0; 64             for(j=1;j<=ProNum;j++) 65             { 66                 if(Student[i].Done[j]) 67                 { 68                     IfPrint=1; 69                     Temsum+=Student[i].grade[j]; 70                 } 71             } 72  73             if(IfPrint) 74             { 75                 Student[i].sum=Temsum; 76                 SqueStu[SqueStuNum++]=Student[i]; 77             } 78         } 79  80  81         sort(SqueStu,SqueStu+SqueStuNum,cmp); 82  83         int tag=-100; 84         int cnt=0; 85         int add=1; 86         for(i = 0;i < SqueStuNum ;i++) 87         {     88             if( SqueStu[i].sum != tag ) 89             { 90                 tag = SqueStu[i].sum; 91                 cnt+= add; 92                 add=1; 93             } 94             else  ++add; 95  96             printf("%d %05d %d",cnt,SqueStu[i].ID,SqueStu[i].sum); 97  98             for(j= 1;j <= ProNum ;j++) 99             {100                 if(SqueStu[i].grade[j] == -1) printf(" -");101                 else102                 {103                     printf(" %d",SqueStu[i].grade[j]);104                 }105             }106             printf("\n");107         }108     }109     return 0;110 }

 

1075. PAT Judge (25)