여러 개의 x, y 좌표를 받아 거리 distance 기준 내림차순 정렬
vector에서 dist값이 같으면 x값을 기준으로 오름차순 정렬
출력은 dist값, x좌표, y좌표 순서
*vector, pair 사용하기
#include<iostream>
#include<vector>
#include<algorithm> //sort 사용하기 위해 불러옴
#include<math.h> //sqrt 사용하기 위해 불러옴
using namespace std;
double dist(int x, int y) {
double res = sqrt(x * x + y * y); //sqrt: 제곱근 구하는 함수
return res;
}
bool comp(pair<double,pair<int, int>> p1, pair<double,pair<int,int>> p2) {
if (p1.first!=p2.first) { //first: dist
return p1 > p2; //내림차순
}
else {
return p1 < p2; //오름차순
}
}
int main() {
vector<pair<double, pair<int, int>>> v;
int N;
cin >> N;
//pair 입력
int x, y;
for (int i = 0; i < N; i++) {
cin >> x >> y;
v.push_back(make_pair(dist(x,y), make_pair(x, y)));
}
//sort 함수
sort(v.begin(), v.end(), comp);
//출력
for (int i = 0; i < v.size(); i++) {
cout << v[i].first << " " << v[i].second.first << " " << v[i].second.second << endl;
}
return 0;
}