对点进行排序,然后依次找出极大点。
#include<iostream>
#include<algorithm>
using namespace std;
struct point {
double x;
double y;
};
bool cmp(point a,point b)
{
return a.x < b.x;
}
bool cmp2(point a, point b)
{
if (a.x != b.x)
return a.x < b.x;
else
return a.y > b.y;
}
int main()
{
int n;
cin >> n;
point*p = new point[n];
for (int i = 0; i < n; i++)
cin >> p[i].x >> p[i].y;
sort(p, p + n, cmp);
sort(p, p + n, cmp2);
for (int i = 0; i < n; i++) {
if (i != 0){
if(p[i].x>p[i-1].x)
cout <<'.'<< '(' << p[i].x << ',' << p[i].y << ')';
}
else
cout << '(' << p[i].x << ',' << p[i].y << ')';
}
return 0;
}