Cod sursa(job #2693019)

Utilizator rimihaiMihai Radu-Ioan rimihai Data 4 ianuarie 2021 15:58:35
Problema Patrate 3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");

struct puncte
{
    float x,y;
} v[1001];
float distSq(puncte p, puncte q)
{
    return (p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y);
}

bool isSquare(puncte p1, puncte p2, puncte p3, puncte p4)
{
    float d2 = distSq(p1, p2);
    float d3 = distSq(p1, p3);
    float d4 = distSq(p1, p4);
    if (d2 == 0 || d3 == 0 || d4 == 0)
        return false;

    if (d2 == d3 && 2 * d2 == d4 && 2 * distSq(p2, p4) == distSq(p2, p3))
    {
        return true;
    }
    if (d3 == d4 && 2 * d3 == d2 && 2 * distSq(p3, p2) == distSq(p3, p4))
    {
        return true;
    }
    if (d2 == d4 && 2 * d2 == d3 && 2 * distSq(p2, p3) == distSq(p2, p4))
    {
        return true;
    }

    return false;
}
int main()
{
    int n,nrpatrate=0;
    fin>>n;
    for(int i=1; i<=n; ++i)
        fin>>v[i].x>>v[i].y;
    for(int i=1; i<=n-3; i++)
        for(int j=i+1; j<=n-2; j++)
            for(int k=j+1; k<=n-1; k++)
                for(int l=k+1; l<=n; l++)
                if(isSquare(v[i],v[j],v[k],v[l])==true) nrpatrate++;
    fout<<nrpatrate;
    return 0;
}