Cod sursa(job #2623931)

Utilizator andreizZenoveiov Andrei andreiz Data 4 iunie 2020 10:39:05
Problema Patrate 3 Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <fstream>
#include <algorithm>
#include <cstring>
#include <set>
#include <string>

using namespace std;
struct PUNCT
{
    int x,y;
};

ifstream f("patrate3.in");
ofstream g("patrate3.out");

bool cmp(PUNCT A,PUNCT B)
{
    if(A.x<B.x)
        return true;
    if(A.x==B.x && A.y<B.y)
        return true;
    return false;
}

int n;
PUNCT A[1001],P,Q;
int i,j;
int rez;
double x,y;
char X[100],Y[100];
int s;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>X>>Y;
        s=strlen(X);
        for(j=0;j<s;j++)
            if(X[j]>='0' && X[j]<='9')
                A[i].x=A[i].x*10+(X[j]-'0');
        if(X[0]=='-')
            A[i].x*=-1;
        s=strlen(Y);
        for(j=0;j<s;j++)
            if(Y[j]>='0' && Y[j]<='9')
                A[i].y=A[i].y*10+(Y[j]-'0');
        if(Y[0]=='-')
            A[i].y*=-1;
    }
    sort(A+1,A+n+1,cmp);
    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
            {
                P.x=A[i].x-(A[j].y-A[i].y);
                P.y=A[i].y+(A[j].x-A[i].x);
                Q.x=A[j].x+(A[i].y-A[j].y);
                Q.y=A[j].y-(A[i].x-A[j].x);
                if(binary_search(A+1,A+n+1,P,cmp)&&binary_search(A+1,A+n+1,Q,cmp))
                    rez++;
                P.x=A[i].x+(A[j].y-A[i].y);
                P.y=A[i].y-(A[j].x-A[i].x);
                Q.x=A[j].x-(A[i].y-A[j].y);
                Q.y=A[j].y+(A[i].x-A[j].x);
                if(binary_search(A+1,A+n+1,P,cmp)&&binary_search(A+1,A+n+1,Q,cmp))
                    rez++;
            }
    g<<rez/4;
    return 0;

}