题目描述
李老师正在分析所有同学参加跳高比赛后的数据,想绘制出身高与跳高成绩之间的关系曲线。
李老师打算先将 n 个同学的数据做一下排序处理:
- 每个同学都有两项数据:身高 ℎi,跳高成绩 si
- 先按跳高成绩 si 从大到小排序,成绩相同时再按身高 ℎi 从小到大排序
- 对于两项数据都完全相同的同学,只保留一个同学的数据即可
请你编写程序帮李老师完成这一任务。
输入格式
第一行一个整数 n (10≤≤105)(10≤n≤105),表示同学的人数。
其后 n 行,每行两个数据,对应为该同学的身高 ℎ(120≤ℎ≤200hi(120≤hi≤200,单位:厘米),及跳高成绩 (80≤≤210si(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
解析
#include <bits/stdc++.h>
using namespace std;
struct node{int h,s;
}tmp;
set<node> st;
bool operator < (node a,node b){if(a.s!=b.s){return a.s>b.s;}else{return a.h<b.h;}
}
int main(){int n;cin>>n;while(n--){cin>>tmp.h>>tmp.s;st.insert(tmp);}for(auto it:st){cout<<it.h<<" "<<it.s<<'\n';}return 0;
}