Решение задачи Точки на плоскости с Acmp

Без пояснения   Просмотров: 58


На плоскости заданы N точек с целочисленными координатами. Требуется найти среди них пару самых ближних и пару самых дальних друг от друга точек.

Код

#include <bits/stdc++.h>

using namespace std;
double func (double x, double y, double x1, double y1)
{
    return sqrt(pow((x - x1),2) + pow((y - y1),2));
}
int main()
{
    double minim = INFINITY, maxim = -1;
    int mini, minj, maxi, maxj;
    int n;
    cin >> n;
    vector<double> x(n);
    vector<double> y(n);
    for(int i = 0; i < n; ++i){
        cin >> x[i] >> y[i];
    }
    for(int i = 0; i < n; ++i){
        for(int j = i + 1; j < n; ++j){
            double res = func(x[i], y[i], x[j], y[j]);
            if(res > maxim){
                maxim = res;
                maxi = i;
                maxj = j;
            }
            if(res < minim){
                minim = res;
                mini = i;
                minj = j;
            }
        }
    }
    cout << mini + 1 << " " << minj + 1 << endl;
    cout << maxi + 1 << " " << maxj + 1;
    return 0;
}

         

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




Комментарии

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