0
已解决
汪一豪
中级守护
中级守护
题目描述 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
成绩保留一位小数
0
已采纳
张展嘉
新手天翼
新手天翼
这是我今天的打卡题
张展嘉在2021-05-10 21:25:25追加了内容
struct p{
int a;
double b;
}z[10001];
bool cmp(p x,p y){
if(x.b!=y.b){
return x.b>y.b;
}
return x.a<y.a;
}
主函数你自己想
0
葛畅
修练者
修练者
bool cmp(stu x,stu y)
{
if(x.b!=y.b)return x.b>y.b;
return x.s<y.s;
}
100分
分数是大的在前,小的在后。序号是小的在前,大的在后。
0
李奕歌
初级天翼
初级天翼
#include<bits/stdc++.h>
using namespace std;
struct man{
long long name;
double cj;
};
man a[100005];
bool cmp(man x,man y){
if(x.cj==y.cj) return x.name<y.name;
else return x.cj>y.cj;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].cj;
}
sort(a+1,a+n+1,cmp);
cout<<a[m].name<<" ";
printf("%.1f",a[m].cj);
cout<<"\n";
return 0;
}
0
李奕歌
初级天翼
初级天翼
30分
#include<bits/stdc++.h>
using namespace std;
struct man{
long long num;
double cj;
};
man a[10005];
bool cmp(man x,man y){
return x.cj>y.cj;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].num>>a[i].cj;
}
sort(a+1,a+n+1,cmp);
cout<<a[m].num<<" ";
printf("%.1f",a[m].cj);
return 0;
}