描述
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。
关于输入
第一行有两个整数,学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。
其后有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<algorithm>
#include<vector>
#include<string>
using namespace std;
struct Student {
float grades;
string number;
};
bool comp(Student&a,Student&b) {
return a.grades > b.grades;
}//注意不是a.grades(),不加括号!
int main() {
int n;
cin >> n;
vector<Student>stu(n);
int k;
cin >> k;
float g;
string m;
for (int i=0;i<n;i++) {
cin >> m>>g;
stu[i].grades = g;
stu[i].number = m;
}
sort(stu.begin(), stu.end(),comp);
cout << stu[k - 1].number << " " << stu[k - 1].grades;
return 0;
}