pat a1036(两次排序)

    技术2026-03-10  6

    思路:从小到大一次,从大到小一次,分别找其中有无男生女生输出第一个值存储。 代码:

    # include<stdio.h> # include<string.h> # include<algorithm> using namespace std; struct student{ char name[15],gender,cla[15]; int grade; }stu[2002]; bool cmp1(student a,student b){ return a.grade>b.grade; } bool cmp2(student a,student b){ return a.grade<b.grade; } int main(){ int n,i,j,g1,g2; char a[15],b[15],c[15],d[15]; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%s %c %s %d",stu[i].name,&stu[i].gender,stu[i].cla,&stu[i].grade); } sort(stu,stu+n,cmp2); int ma=-1; for(i=0;i<n;i++){ if(stu[i].gender=='M'){ ma=i; break; } } if(ma>-1){ strcpy(a,stu[ma].name); strcpy(b,stu[ma].cla); g1=stu[ma].grade; } sort(stu,stu+n,cmp1); int fe=-1; for(i=0;i<n;i++){ if(stu[i].gender=='F'){ fe=i; break; } } if(fe>-1){ strcpy(c,stu[fe].name); strcpy(d,stu[fe].cla); g2=stu[fe].grade; } if(fe>=0&&ma>=0){ printf("%s %s\n",c,d); printf("%s %s\n",a,b); printf("%d",g2-g1); } if(fe>=0&&ma==-1){ printf("%s %s\n",c,d); printf("Absent\n"); printf("NA"); } if(ma>=0&&fe==-1){ printf("Absent\n"); printf("%s %s\n",a,b); printf("NA"); } return 0; }
    Processed: 0.028, SQL: 9