跳高比赛1
题目描述
李老师正在分析所有同学参加跳高比赛后的数据,想绘制出身高与跳高成绩之间的关系曲线。
李老师打算先将 n 个同学的数据做一下排序处理:
- 每个同学都有两项数据:身高 ℎi,跳高成绩 si
- 先按跳高成绩 si 从大到小排序,成绩相同时再按身高 ℎi 从小到大排序
- 对于两项数据都完全相同的同学,只保留一个同学的数据即可
请你编写程序帮李老师完成这一任务。
输入格式
第一行一个整数 n (10≤n≤10^5),表示同学的人数。
其后 n 行,每行两个数据,对应为该同学的身高 ℎi(120≤hi≤200,单位:厘米),及跳高成绩si(80≤si≤210,单位:厘米 )。
输出格式
输出若干行,为题目要求去重排序后的结果,每行为一个同学的数据 ℎi 和 si,中间用 1 个空格隔开。
样例 #1
样例输入 #1
6
150 80
140 80
150 80
140 90
150 81
140 80
样例输出 #1
140 90
150 81
140 80
150 80
代码
```cpp
#include <bits/stdc++.h>
using namespace std;
struct stu
{
int hi,si;
};
set<stu> s;
//重载运算符
bool operator <(stu a,stu b)
{
if(a.si!=b.si)
return a.si>b.si;
return a.hi<b.hi;
}
int main()
{
int n,hi,si;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>hi>>si;
s.insert({hi,si});
}
for(auto it:s)
cout<<it.hi<<" "<<it.si<<endl;
return 0;
}
```