Cod sursa(job #1900296)

Utilizator cipri321Marin Ciprian cipri321 Data 3 martie 2017 11:53:15
Problema Patrate 3 Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
struct PUNCT
{
    int x,y;
};
ifstream fi("patrate3.in");
ofstream fo("patrate3.out");
int compar(PUNCT A,PUNCT B)
{
    if(A.x<B.x)
        return 1;
    if(A.x==B.x && A.y<B.y)
        return 1;
    return 0;
}
int n;
PUNCT A[1001],P,Q;
int i,j;
int rez;
double x,y;
char X[100],Y[100];
int s;
int main()
{
    fi>>n;
    for(i=1;i<=n;i++)
    {
        fi>>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');
        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');
    }
    sort(A+1,A+n+1,compar);
    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,compar)&&binary_search(A+1,A+n+1,Q,compar))
                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,compar)&&binary_search(A+1,A+n+1,Q,compar))
                rez++;
        }
    fo<<rez/4;
    fi.close();
    fo.close();
    return 0;
}