1 条题解

  • 0
    @ 2026-10-7 20:01:09

    大白话思路

    把男女分别收集并排序,男生按身高从小到大输出,女生按身高从大到小输出。保持两位小数,注意组间空格与浮点表示。时间 O(n log n),空间 O(n)。

    C++17 标准解

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int main()
    {
        int n;
        double d;
        char s[20];
        double a[50],b[50];
        int p=0,q=0;
        double temp;
        int i,j;
        
        
        cin>>n;
        for(i=0;i<n;i++)
        {
            cin>>s>>d;
            if(strcmp(s,"male")==0)
                a[p++]=d;
            else 
                b[q++]=d;
        }
        
        for(i=0;i<p;i++)
            for(j=i+1;j<p;j++)
                if(a[i]>a[j])
                {
                    temp=a[i];
                    a[i]=a[j];
                    a[j]=temp;
                }
                
        for(i=0;i<q;i++)
            for(j=i+1;j<q;j++)
                if(b[i]<b[j])
                {
                    temp=b[i];
                    b[i]=b[j];
                    b[j]=temp;
                }
                
        for(i=0;i<p;i++)
            printf("%.2lf ",a[i]);
        for(i=0;i<q;i++)
            printf("%.2lf ",b[i]);
        return 0;
    }
    
    

    来源:HEEKDragonOne/ACM,一本通 1182;固定提交 29b5b378f6257c2d9ba99452d0f5b770a26c826c。仅赛后开放。

    信息

    ID
    1006
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    23
    已通过
    6
    上传者