题目描述
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第 k
名学生的学号和成绩。
输入格式
其后有 n
行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
输出格式
输出第 k
名学生的学号和成绩,中间用空格分隔。(注:请用 %g
输出成绩)
输入样例
5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9
输出样例
90788004 68.4
#include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; struct Student { int id; double score; };//然后创建一个结构体存储学号和成绩 bool compare(const Student &a, const Student &b) { return a.score > b.score; } int main() { int n, k; cin >> n >> k; vector<Student> students(n); for (int i = 0; i < n; i++) { cin >> students[i].id >> students[i].score; } sort(students.begin(), students.end(), compare);//对结构体数组按照成绩进行排序 cout << students[k - 1].id << " " << fixed << setprecision(1) << students[k - 1].score << endl; return 0; }