题目链接
https://www.acwing.com/problem/content/3378/
#include<iostream>
#include<algorithm>
using namespace std;
struct Student{
string name;//名字
int score;//成绩
int id;//学号
}stu[10010];
//升序
bool cmp1(Student a,Student b)
{
if(a.score!=b.score)return a.score>b.score;
else return a.id<b.id;//成绩相同时按原始成绩单排序
}
bool cmp2(Student a,Student b)
{
if(a.score!=b.score)return a.score<b.score;
else return a.id<b.id;//成绩相同时按原始成绩单排序
}
int main()
{
int n,t;//学生人数和排序规则
cin>>n>>t;
for(int i=0;i<n;i++)
{
cin>>stu[i].name>>stu[i].score;
stu[i].id=i;//原始排名
}
//分数从高到低
if(t==0)sort(stu,stu+n,cmp1);
else sort(stu,stu+n,cmp2);
//输出排序后的结果
for(int i=0;i<n;i++)
{
cout<<stu[i].name<<" "<<stu[i].score<<endl;
}
return 0;
}