天天看點

杭電5499

#include<stdio.h>

#include<string.h>

typedef struct person

{

    char name[21];

    char sex[7];

    int round1;

    int round2;

    float final_mark;

}Person;

void sort(Person end[], int n)

{

    for(int i = 0; i < n; i++)

        {

            for(int k = 0; k < n - i - 1; k++)

            {

                if(end[k].final_mark < end[k+1].final_mark)

                {

                    Person temp = end[k];

                    end[k] = end[k+1];

                    end[k+1] = temp;

                }

            }

        }

}

int main()

{

    int t;

    Person a[106],fe[106],ma[106],end[106];

    int n[106],m[106];

    scanf("%d",&t);

    for(int j = 0; j < t; j++)

    {

        scanf("%d%d",&n[j],&m[j]);

        for(int i = 0; i < n[j]; i++)

        {

            scanf("%s%s%d%d",a[i].name, a[i].sex, &a[i].round1, &a[i].round2);

            //printf("%d\t%d\n",a[i].round1,a[i].round2);

        }

        int max1 = a[0].round1;

        int max2 = a[0].round2;

        for(int i = 1; i < n[j]; i++)

        {

            if(a[i].round1 > max1) max1 = a[i].round1;

            if(a[i].round2 > max2) max2 = a[i].round2;

        }

        for(int i = 0; i < n[j]; i++)

        {

            a[i].final_mark = ((300.0 / max1 * a[i].round1 * 0.3) + (300.0 / max2 * a[i].round2 * 0.7));

        }

        int  k = 0, x = 0;

        for(int i = 0; i < n[j]; i++)

        {

            if(strcmp(a[i].sex,"female") == 0)

                fe[k++] = a[i];

            if(strcmp(a[i].sex,"male") == 0)

                ma[x++] = a[i];

        }

        sort(fe, k);

        sort(ma, x);

        sort(a, n[j]);

        int w = 0,i;

        if(k > 0)  end[w++] = fe[0];  

        for(k = 0,i = w; i < m[j] - w + 1; k++)

            if(strcmp(a[k].name,end[0].name) != 0)  end[i++] = a[k];  

        sort(end, m[j]);

        printf("The member list of Shandong team is as follows:\n");

        for(i = 0; i < m[j]; i++)

            printf("%s\n",end[i].name);

    }

    return 0;

}