0
已解决
李宜和
高级启示者
高级启示者
考试排排序经验值:800
题目描述 Description
在期末考试结束后,已知了学生的学号和考试成绩,请聪明的你输出考试第m名学生的学号和成绩。(如果有若干个相同的成绩,则学号小的优先输出)。
输入描述 Input Description
输入n+1行;
第一行输入整数n,m;n表示学生人数,m表示第m名的学生。其中0<m<=n<10000。
剩下的n行,每行包括一个学号(整数10000~99999)和一个成绩,中间用一个空格分隔。
输出描述 Output Description
输出为一行,输出第m名学生的学号和成绩(保留一位小数),中间用空格分隔。
样例输入 Sample Input
5 3 16001 77.5 16002 90.5 16003 61.5 16004 68.0 16005 73.5
样例输出 Sample Output
16005 73.5
数据范围及提示 Data Size & Hint
成绩保留一位小数
错误代码
#include<bits/stdc++.h>
using namespace std;
struct f{
string name;
double fs;
}a[105];
bool cmp(f n,f m){
if(n.fs!=m.fs){
return n.fs>m.fs;
}
return n.fs<m.fs;
}
int main(){
int n,z;
cin>>n>>z;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].fs;
}
sort(a+1,a+n+1,cmp);
cout<<a[z].name<<" "<<a[z].fs<<endl;
return 0;
}
李宜和在2021-09-07 17:58:50追加了内容
@朱小川
@王文博