你可以使用C或C++编写程序来解决这个问题。以下是一个可能的解决方案:#include <iostream>#include <vector>#include <algorithm>struct Student { int score; int grade;};bool compareStudents(const Student& s1, const Student& s2) { if (s1.score == s2.score) { return s1.grade < s2.grade; } return s1.score > s2.score;}int main() { int n; std::cin >> n; std::vector<Student> students(n); for (int i = 0; i < n; ++i) { std::cin >> students[i].score >> students[i].grade; } std::sort(students.begin(), students.end(), compareStudents); std::vector<int> numLowerGrades(n); for (int i = 0; i < n; ++i) { int count = 0; for (int j = 0; j < i; ++j) { if (students[j].grade < students[i].grade) { count++; } } numLowerGrades[i] = count; } for (int i = 0; i < n; ++i) { std::cout << numLowerGrades[i] << std::endl; } return 0;}
该程序首先读取学生的数量n,然后读取每个学生的成绩和年级。接下来,它使用自定义的比较函数按照成绩从高到低、年级从低到高的顺序对学生进行排序。然后,它计算每个学生前面有多少位成绩更高且年级更低的学生,并将结果存储在一个向量中。最后,它输出这个向量中的所有元素。
希望这可以帮助你解决问题!
球一个最佳答案谢谢啦!这对我非常重要! |