CF1017A The Rank

$CF$水题。

用一个双关键字排序就可以很好地解决这个问题。

$code$

#include <iostream>
#include <algorithm> 
using namespace std;

const int maxN = 1001;
namespace The_Rank
{
    struct Stu
    {
        int a, b, c, d, sum, id; //定义四门课的成绩,总分和编号
    }stu[maxN];
    int n;
    bool cmp(Stu x, Stu y)
    {
        if(x.sum != y.sum) return x.sum > y.sum;
        return x.id < y.id; 
    }
    void work()
    {
        cin >> n;
        for(int i = 1; i <= n; i ++)
        {
            cin >> stu[i].a >> stu[i].b >> stu[i].c >> stu[i].d;
            stu[i].sum = stu[i].a + stu[i].b + stu[i].c + stu[i].d; //总分就是四门课成绩之和
            stu[i].id = i; //id初始时就是i
        }
        sort(stu + 1, stu + 1 + n, cmp); //sort排序
        for(int i = 1; i <= n; i ++)
            if(stu[i].id == 1) cout << i; //如果找到了正确的人就输出他的排名,因为已经排过序了,所以第i个人的排名就是i,输出i即可
    }
}

int main()
{
    The_Rank::work();
}

猜你喜欢

转载自www.cnblogs.com/Xray-luogu/p/9551122.html