Решение задачи Развлечения с измерителем с Acmp

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


Дима обнаружил у папы на столе специальный чертежный прибор, похожий на циркуль-измеритель. Измеритель отличается от обычного циркуля тем, что в обеих его ножках находятся иголки (у обычного циркуля в одной ножке находится иголка, а в другой – грифель).

Кроме измерителя Дима нашел на столе клетчатый лист бумаги, в углах некоторых клеток которого были нарисованы точки. Так как измеритель служит для измерения расстояний, то Дима решил измерить все попарные расстояния между всеми точками на листе бумаги.

Ваша задача - написать программу, которая по координатам точек определит, сколько различных расстояний встречается среди расстояний, которые измерил Дима.

Код

#include <bits/stdc++.h>

using namespace std;
double solve(int x1, int y1, int x2, int y2)
{
    return sqrt(pow((x1 - x2),2) + pow((y1 - y2),2));
}
int main()
{
    int n;
    cin >> n;
    set<double> a;
    int s[n][2];
    for(int i = 0; i < n; ++i)
        cin >> s[i][0] >> s[i][1];
    for(int i = 0; i < n; ++i)
        for(int j = i + 1; j < n; ++j)
            a.insert(solve(s[i][0], s[i][1], s[j][0], s[j][1]));
    cout << a.size() << endl;
    for(auto i: a)
        cout << fixed << setprecision(9) << i << endl;

    return 0;
}

         

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


Воспользуемся формулой нахождения расстояния между точками


Комментарии

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