【算法分析】
1、先按y从大到小排序,y相同按x从大到小排序
2、排序之后相当于从二维变一维(y不需要管了,因为排序了可以降维度来控制),用cur来更新当前x的最大值。
【代码】
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 110;
struct node{
int x;
int y;
}a[N];
bool cmp(node c, node d){
if(c.y!=d.y) return c.y > d.y;
else return c.x >d.x;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].x>>a[i].y;
}
sort(a,a+n,cmp);//排序
int cur = - INF;
int flag1 = 0;
for(int i=0;i<n;i++)
{
if(a[i].x > cur){
cur = a[i].x;
if(flag1++) cout<<",";//逗号分隔符判断
cout<<"("<<a[i].x<<","<<a[i].y<<")";
}
}
return 0;
}