64,281
社区成员
发帖
与我相关
我的任务
分享
/*
成绩查找+排序
cin:人数+排序方式+姓名+成绩
cout:姓名+成绩
分数相同,按照输入顺序排列
*/
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct Stu{
char name[10];
int score;
};
bool cmp(Stu a,Stu b){
return a.score > b.score;
}
bool cmp1(Stu a,Stu b){
return a.score < b.score;
}
int main(){
int n,type;
while(cin>>n>>type){
vector<Stu> v(n);
v.clear();
for(int i=0;i<n;i++){
cin>>v[i].name>>v[i].score;
}
if(type == 0){
sort(v.begin(),v.begin()+n,cmp);
}else if(type == 1){
sort(v.begin(),v.begin()+n,cmp1);
}
for(int i=0;i<n;i++){
cout<<v[i].name<<" "<<v[i].score<<endl;
}
}
return 0;
}
链接:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1
来源:牛客网
用例:
28
1
qhsq 15
ozslg 79
ncttmtsphb 71
a 39
eeiuyzsj 34
nmlrokx 21
pjizylo 90
ec 45
f 12
sh 31
fm 25
ptprphubqk 29
wxdiwv 0
uhlcpjtxad 60
w 20
zwktbpun 70
efzfkf 69
v 31
rsnrgtl 73
lhdo 76
wt 56
mcdwd 14
ydrnoyd 37
gmlfds 76
zx 1
dqx 98
gz 90
kvbzrwrrjj 13
对应输出应该为:
wxdiwv 0
zx 1
f 12
kvbzrwrrjj 13
mcdwd 14
qhsq 15
w 20
nmlrokx 21
fm 25
ptprphubqk 29
sh 31
v 31
eeiuyzsj 34
ydrnoyd 37
a 39
ec 45
wt 56
uhlcpjtxad 60
efzfkf 69
zwktbpun 70
ncttmtsphb 71
rsnrgtl 73
lhdo 76
gmlfds 76
ozslg 79
pjizylo 90
gz 90
dqx 98
你的输出为:
wxdiwv 0
zx 1
f 12
kvbzrwrrjj 13
mcdwd 14
qhsq 15
w 20
nmlrokx 21
fm 25
ptprphubqk 29
sh 31
v 31
eeiuyzsj 34
ydrnoyd 37
a 39
ec 45
wt 56
uhlcpjtxad 60
efzfkf 69
zwktbpun 70
ncttmtsphb 71
rsnrgtl 73
lhdo 76
gmlfds 76
ozslg 79
gz 90
这个是什么情况呢?我在dev中是可以出来全部的