N Closest Points
using point = pair<int, int>;
double distance(const point &p)
{
return sqrt(pow(p.first, 2) + pow(p.second, 2));
}
vector<point> closest_points( vector<point> &points, int n)
{
sort(points.begin(), points.end(), [](auto &left, auto &right) {
return distance(left) < distance(right);
});
return vector<point>(points.begin(), points.begin() + n);
}
int main()
{
vector<point> test = {
{1,1}, {10,20}, {15, 8}, {1,0}, {2,3}, {5,6}
};
vector<point> cp = closest_points(test, 3);
for (point p : cp) {
cout << "(" << p.first << ", " << p.second << ")" << endl;
}
}Last updated