$CF$水题。
用一个双关键字排序就可以很好地解决这个问题。
$code$
#include#include 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();}