WA 0 pts 求调
查看原帖
WA 0 pts 求调
932039
lzy20091001楼主2023/11/22 23:12

样例已过,照着第一篇题解调了半天没有发现问题。求调。

#include <iostream>
#include <algorithm>

// 成员 
struct member
{
    std::string name, job; // 名字, 工作
    int id, contribution, level; // 输入序号, 帮贡, 等级
};

member faction[115]; // 帮派

int change(std::string a)
{
    if (a == "Bangzhu")
        return 1;
    if (a == "FuBangZhu")
        return 2;
    if (a == "HuFa")
        return 3;
    if (a == "ZhangLao")
        return 4;
    if (a == "TangZhu")
        return 5;
    if (a == "JingYing")
        return 6;
    if (a == "BangZhong")
        return 7;
}

bool cmp1(member a, member b) // 第一轮排序
{
    if (a.contribution != b.contribution)
        return a.contribution > b.contribution;
    return a.id < b.id;
}

bool cmp2(member a, member b) // 第二轮排序
{
    if (a.job != b.job)
        return change(a.job) < change(b.job);
    if (a.level != b.level)
        return a.level > b.level;
    return a.id < b.id;
}

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    int n;
    std::cin >> n;
    for (int i = 1; i <= n; i++)
    {
        faction[i].id = i;
        std::cin >> faction[i].name >> faction[i].job >> faction[i].contribution >> faction[i].level;
    }

    std::sort(faction + 4, faction + n + 1, cmp1);
    for (int i = 4; i <= n; i++) // 调整职位
    {
        if (i <= 5)
            faction[i].job = "HuFa";
        else if (i <= 9)
            faction[i].job = "ZhangLao";
        else if (i <= 16)
            faction[i].job = "TangZhu";
        else if (i <= 41)
            faction[i].job = "JingYing";
        else
            faction[i].job = "BangZhong";
    }
    std::sort(faction + 1, faction + n + 1, cmp2);

    for (int i = 1; i <= n; i++)
        std::cout << faction[i].name << " " << faction[i].job << " " << faction[i].level << "\n";

    return 0;
}

2023/11/22 23:12
加载中...