• 1062 Talent and Virtue (25分)——sort排序


    #include <iostream>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    struct person
    {
        string id;
        int virtue, talent, sum;
        int type;//12345
    };
    bool cmp(person a, person b)//按类别,总分,德分,学号排序
    {
        if (a.type != b.type)
            return a.type < b.type;
        else if (a.sum != b.sum)
            return a.sum > b.sum;
        else if (a.virtue != b.virtue)
            return a.virtue > b.virtue;
        else
            return a.id < b.id;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        int N, L, H;
        cin >> N >> L >> H;
        struct person* p = new struct person[N];
        string id;
        int virtue, talent;
        int cnt = 0;
        for (int i = 0; i < N; ++i)
        {
            cin >> id >> virtue >> talent;
            if (virtue >= L && talent >= L)
            {
                p[cnt].id = id;
                p[cnt].virtue = virtue;
                p[cnt].talent = talent;
                p[cnt].sum = (virtue + talent);
                if (virtue >= H&& talent >= H)
                {
                    p[cnt].type = 1;
                }
                else
                {
                    if (virtue >= H)
                    {
                        p[cnt].type = 2;
                    }
                    else
                    {
                        if (virtue >= L && talent >= L)
                        {
                            if (virtue >= talent)
                            {
                                p[cnt].type = 3;
                            }
                            else
                            {
                                p[cnt].type = 4;
                            }
                        }
                        else
                            p[cnt].type = 5;
                    }
                }
                cnt++;
            }
        }
        sort(p, p+cnt,cmp);
        cout << cnt << endl;
        for (int i = 0; i < cnt; ++i)
        {
            cout << p[i].id << ' ' << p[i].virtue << ' ' << p[i].talent << endl;
        }
        return 0;
    }
  • 相关阅读:
    共享内存
    利用消息队列实现ECHO_SRV
    LINUX学习:System V消息队列
    linux:利用socketpair来在进程间传递描述符
    react传参
    ajax、axios、fetch
    js 深拷贝和浅拷贝实现
    css----px、rem、em、vw、vh、vm
    Sass、Less 和 Stylus区别
    箭头函数和普通函数对比
  • 原文地址:https://www.cnblogs.com/2020R/p/13753178.html
Copyright © 2020-2023  润新知