1015. 德才论 (25)

来源:互联网 发布:俄罗斯杜马选举知乎 编辑:程序博客网 时间:2024/05/16 18:01
#include<stdio.h>#include<stdlib.h>#include<math.h> struct student{     int StuId;     int moral;     int talent;        };int cmp(const void *a,const void *b){    struct student *s1 = (struct student *)a, *s2 = (struct student *)b;    if( s1 -> moral+ s1->talent< s2->moral + s2->talent )        return 1;    else if( s1->moral+s1->talent==s2->moral+s2->talent)    {        if( s1->moral<s2->moral )            return 1;        else if( s1->moral==s2 ->moral)        {            if( s1->StuId>s2->StuId )                return 1;            else return -1;        }        else return -1;    }    else return -1;}int main(){    int num , minGra , maxGra ;    int count = 0 ;    int i ;    int flag1 = 0 ;    int flag2 = 0 ;    int flag3 = 0 ;    int flag4= 0 ;    scanf("%d %d %d",&num,&minGra,&maxGra);        struct student stu[num];        struct student fir[num];        struct student sec[num];        struct student thi[num];        struct student fou[num];        for(i = 0 ; i < num ; ++i){            scanf("%d %d %d",&stu[i].StuId,&stu[i].moral,&stu[i].talent);        }        for(i = 0 ; i < num ; ++i){            if(stu[i].moral < minGra || stu[i].talent < minGra){            }else{                ++count;                if(stu[i].moral >= maxGra && stu[i].talent >= maxGra){                    fir[flag1++] = stu[i];                }else if(stu[i].moral >= maxGra && stu[i].talent < maxGra){                    sec[flag2++] = stu[i];                }else if(stu[i].moral < maxGra && stu[i].talent < maxGra                         && stu[i].moral >= stu[i].talent ){                         thi[flag3++] = stu[i];                         }else{                         fou[flag4++] = stu[i];                         }            }        }        printf("%d\n",count);        qsort(fir , flag1 , sizeof(fir[0]) , cmp);        for(i = 0 ; i < flag1 ; ++i){            printf("%d %d %d", fir[i].StuId , fir[i].moral, fir[i].talent);            printf("\n");        }         qsort(sec , flag2 , sizeof(sec[0]) , cmp );        for(i = 0 ; i < flag2 ; ++i){            printf("%d %d %d", sec[i].StuId , sec[i].moral, sec[i].talent);            printf("\n");        }         qsort(thi , flag3 , sizeof(thi[0]) , cmp);        for(i = 0 ; i < flag3 ; ++i){            printf("%d %d %d", thi[i].StuId , thi[i].moral, thi[i].talent);            printf("\n");        }         qsort(fou , flag4 , sizeof(fou[0]) , cmp);        for(i = 0 ; i < flag4 ; ++i){            printf("%d %d %d", fou[i].StuId , fou[i].moral, fou[i].talent);            printf("\n");        }        return 0;}