HDU 5499/BC 59A SDOI

首先按照题中所给的公式,计算出每个人的分数,结构体排序,之后先输出排名前m-1个队员,如果已经输出了女队员或者没有女队员参加,那么直接输出排第m的队员即可。否则找到剩下队员中排名最好的女队员

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#define scnaf scanf
#define cahr char
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
const int maxn=1e5+15;
struct T
{
    char name[30],sex[30];
    int r1,r2;
    double v;
    bool operator <(const T &b) const{
        return v>b.v;
    }
} a[105];
int main()
{
    int T_T;
    scnaf("%d",&T_T);
    while(T_T--)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        int maxr1=0,maxr2=0;
        int flag=0;
        for(int i=0; i<n; i++)
        {
            scanf("%s%s%d%d",a[i].name,a[i].sex,&a[i].r1,&a[i].r2);
            maxr1=max(maxr1,a[i].r1);
            maxr2=max(maxr2,a[i].r2);
            if(a[i].sex[0]=='f') flag=1;
        }
        for(int i=0; i<n; i++)
            a[i].v=0.3*a[i].r1*300/maxr1+0.7*a[i].r2*300/maxr2;
        sort(a,a+n);
        printf("The member list of Shandong team is as follows:\n");
        for(int i=0; i<m-1; i++)
        {
            printf("%s\n",a[i].name);
            if(a[i].sex[0]=='f') flag=0;
        }
        if(flag)
        {
            for(int i=m-1; i<n; i++)
                if(a[i].sex[0]=='f')
                {
                    printf("%s\n",a[i].name);
                    break;
                }
        }
        else printf("%s\n",a[m-1].name);

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值