Cod sursa(job #1937134)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 23 martie 2017 19:01:26
Problema Patrate 3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
# include <bits/stdc++.h>
# define per pair <int, int>

using namespace std;

const int Nmax = 1000 + 5;

int n, xx, yy, i, j, sol = 0;
double x, y;
per v[Nmax];

int main ()
{
    freopen("patrate3.in", "r", stdin);
    freopen("patrate3.out", "w", stdout);

    scanf("%d\n", &n);

    for (i = 1; i <= n; ++i)
    {

        scanf("%lf %lf\n", &x, &y);

        xx = (int) round (x * 10000);
        yy = (int) round (y * 10000);

        v[i] = per (xx, yy);
    }

    sort (v + 1, v + n + 1);

    for (i = 1; i <= n; ++i)
        for (j = 1; j <= n; ++j)
            if (v[i].first < v[j].first && v[i].second <= v[j].second)
            {

                int midx = (v[i].first + v[j].first) / 2;
                int midy = (v[i].second + v[j].second) / 2;

                int dx = abs(midx - v[i].first);
                int dy = abs(midy - v[i].second);

                per pct1, pct2;

                if (v[i].second < v[j].second)
                {
                    pct1 = {midx + dy, midy - dx};
                    pct2 = {midx - dy, midy + dx};
                }
                else
                {
                    pct1 = {midx - dy, midy - dx};
                    pct2 = {midx + dy, midy + dx};
                }

                if (binary_search(v + 1, v + n + 1, pct1) && binary_search(v + 1, v + n + 1, pct2)) ++sol;

            }

    printf("%d\n", sol);

    return 0;
}