Napisz program, który wczyta liczbę N, a następnie N+1 punktów o współrzędnych całkowitych. Program powinien wydrukować na standardowym wyjściu N punktów (wszystkie poza pierwszym) zgodnie z rosnącymi odległościami od pierwszego punktu.
Mam coś takiego, ale nie wiem jak odnieść się do pierwszego punktu, na którym ma opierać się liczenie odległości... w funkcji bool cmp zamiast zer powinien być jak domniemywam ten punkt.
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
struct punkt{
int x;
int y;
};
bool cmp (punkt a, punkt b){
return sqrt((0 + a.x) * (0 + a.x) + (0 + a.y) * (0 + a.y)) < sqrt((0 + b.x) * (0 + b.x) + (0 + b.y) * (0 + b.y));
}
int main(){
int n;
cin >> n;
punkt P[n + 1];
cin >> P[0].x >> P[0].y;
for(int i = 1; i < n + 1; ++i){
cin >> P[i].x >> P[i].y;
}
sort(P, P + (n + 1), cmp);
for(int i = 1; i < n + 1; ++i)
cout << P[i].x << " " << P[i].y << endl;
return 0;
}