问题标题: 酷町堂:1480

0
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追加了内容

@朱小川 

@王文博 


0
已采纳
武奕楷
武奕楷
新手天翼
新手天翼

工作室回过你了

我要回答