Решение задачи Сортировка точек с Mccme

С пояснением   Просмотров: 43


Выведите все исходные точки в порядке возрастания их расстояний от начала координат.

Создайте структуру Point и сохраните исходные данные в массиве структур Point.

Код

#include <bits/stdc++.h>
using namespace std;

double solve(int x, int y)
{
    return sqrt(x * x + y * y);
}
int main()
{
    int n, x, y;
    cin >> n;
    vector<int> xs;
    vector<int> ys;
    vector<double> res;
    for(int i = 0; i < n; ++i){
        cin >> x >> y;
        xs.push_back(x);
        ys.push_back(y);
        res.push_back(solve(x, y));
    }
    for(int i = 0; i < res.size() - 1; ++i){
        for(int j = i + 1; j < res.size(); ++j){
            if(res[i] > res[j]){
                swap(res[i], res[j]);
                swap(xs[i], xs[j]);
                swap(ys[i], ys[j]);
            }
        }
    }
    for(int i = 0; i < xs.size(); ++i){
        cout << xs[i] << " " << ys[i] << endl;;
    }
    return 0;
}

         

Администратор Photo Автор: Администратор


Извините, друзья. Я её не смог решить с помощью Point. Но решил другим способом и он прошёл.
Все координаты x положил в массив xs
Все координаты y положил в массив ys
Все расстояния вычислил по формулу(создал функцию solve) и положил в массив res
При сортировке массива res, параллельно сортировал массивы xs и ys.
Если непонятно, задавайте вопросы. С радостью на них отвечу. Админ сходит с ума!!!
$$ \Large \sqrt{\left(x_1-x_2\right)_{\ \ \ +\ \ \ }^2\left(y_1-y_2\right)^2} $$


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться