zcmu-1671 凡事都要签到啦(结构体+多项属性比较,对cmp做文章)

 题目链接

比较水

#include <cstdio>
#include <iostream>
#include <set>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <iomanip>
#define ll long long
using namespace std;
typedef struct{
    int m,e,c;
    double avg;
} grade;
bool cmp(grade x,grade y)
{
    if(x.avg > y.avg)
        return true;
    else if(x.avg == y.avg)
    {
        if(x.m > y.m)
            return true;
        else if(x.m == y.m)
        {
            if(x.c > y.c)
                return true;
            else if(x.c == y.c)
            {
                if(x.e < y.e)
                    return true;
            }
        }
    }
    return false;
}
grade x[5005];
int main()
{
    int n;
    while(cin>>n){
        for(int i = 0;i < n;i++)
        {
            cin>>x[i].m>>x[i].e>>x[i].c;
            x[i].avg = (x[i].m + x[i].e + x[i].c)/3.0;
        }
        sort(x,x+n,cmp);
        for(int i = 0;i < n;i++)
        {
            cout<<x[i].m<<" "<<x[i].c<<" "<<x[i].e<<setiosflags(ios::fixed)<<setprecision(2)<<" "<<x[i].avg<<endl;
        }
    }
   
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/hzyhfxt/article/details/81877752
今日推荐