HOJ 2659 My Favourite Code

HOJ 2659 My Favourite Code
题目内容:给出几科成绩,按一定要求排序
1.第一次这样大规模sort,对cmp函数编写理解更深入了一步
1.用空格读空格回车符 " %s"
 1 #include  < stdio.h >
 2 #include  < stdlib.h >
 3 #include  < algorithm >
 4
 5 struct  a
 6 {
 7    char name[50];
 8    int point[4];
 9    int sum;
10    int flag;
11}
in [ 10100 ];
12 bool  cmp1( struct  a a1, struct  a a2) // cmp1开始写的不完整
13 {
14    if(a1.flag&&!a2.flag) return true;
15    if(!a1.flag&&a2.flag) return false;
16    if(a1.flag&&a2.flag)
17    {
18        if (a1.sum>a2.sum) return true;
19        else if(a1.sum<a2.sum) return false;
20    }

21    if(strcmp(a1.name,a2.name)<0return true;
22    return false;
23}

24 bool  cmp2( struct  a a1, struct  a a2)
25 {
26    if(a1.point[0]<a2.point[0]) return true;
27    if(a1.point[0]>a2.point[0]) return false;
28    if(a1.point[1]<a2.point[1]) return true;
29    if(a1.point[1]>a2.point[1]) return false;
30    if(a1.point[2]<a2.point[2]) return true;
31    if(a1.point[2]>a2.point[2]) return false;
32    if(a1.point[3]<a2.point[3]) return true;
33    if(a1.point[3]>a2.point[3]) return false;
34    if(strcmp(a1.name,a2.name)>0return true;
35    return false;
36}

37 int  main()
38 {
39    int n,flagblank = 0;
40    int i,j;
41    while(scanf("%d",&n)==1&&n)
42    {
43        if(flagblank) printf("\n");
44        flagblank = 1;
45
46        for(i = 0; i < n; i++)
47        {
48            scanf(" %s",in[i].name);//用空格读空格回车符
49            in[i].flag = 1;
50            in[i].sum = 0;
51            for(j = 0; j < 4; j++)
52            {
53                scanf("%d",&in[i].point[j]);
54                if(in[i].point[j]<5in[i].flag = 0;
55                in[i].sum+=in[i].point[j];
56            }

57            std::sort(in[i].point,in[i].point+4);
58        }

59        std::sort(in,in+n,cmp1);
60
61        for(i = 0; i < n; i++if(in[i].flag==0break;
62
63        if(i!=n) std::sort(&in[i],&in[i]+n-i,cmp2);
64
65        for(j = 0;j < i; j++) printf("%s\n",in[j].name);
66
67        for(j = n-1; j >= i;j--) printf("%s\n",in[j].name);
68    }

69    return 0;
70}

71

你可能感兴趣的:(HOJ 2659 My Favourite Code)