#include <bits/stdc++.h> #define int long long #define PII pair<int,int> #define endl '\n' using namespace std; const int N=2e5+10; struct Node{ string name;int grade,idx; }stu[N]; //成绩从小到大排序,如果成绩一样那么就按照先后输入排序。 bool cmp1(Node a,Node b) { if(a.grade!=b.grade) return a.grade<b.grade; else return a.idx<b.idx; } bool cmp0(Node a,Node b) { if(a.grade!=b.grade) return a.grade>b.grade; else return a.idx<b.idx; } signed main() { std::ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int n,flag; //多次输入,只要有输入那么就执行代码。 //dev,ctrl+z终止输入。 while(cin>>n>>flag) { for(int i=1;i<=n;i++) { string s;cin>>s; int grade;cin>>grade; stu[i]={s,grade,i}; } //自定义排序。 if(flag==1) sort(stu+1,stu+n+1,cmp1); else sort(stu+1,stu+n+1,cmp0); for(int i=1;i<=n;i++) cout<<stu[i].name<<' '<<stu[i].grade<<endl; } }
KY2 成绩排序(计算机考研复试上机题)
最新推荐文章于 2024-07-20 22:49:13 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)