Cod sursa(job #7203)

Utilizator slayer4uVictor Popescu slayer4u Data 21 ianuarie 2007 13:04:29
Problema Patrate 3 Scor 5
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 9-a si gimnaziu Marime 1.73 kb
#include<stdio.h>
#include<math.h>
long n,i,a,b,c,d,num;
float x[1001],y[1001],m1,m2,m3,m4,p,k;

float abs(float x)
{
      if (x<0)
      return -x;
      return x;
}

float size(float x1, float y1, float x2, float y2)
{
      return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

float panta(float x1, float y1, float x2, float y2)
{
      if (x1==x2) return 0;
      return (y2-y1)/(x2-x1);
}

int main()
{
    freopen ("patrate3.in","rt",stdin);
    freopen ("patrate3.out","wt",stdout);
    scanf ("%ld",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%f %f",&x[i],&y[i]);
        x[i]+=0.00001, y[i]+=0.00001;
    }
    for (a=1;a<=n;a++)
        for (b=1;b<=n;b++)
        {
            p=size(x[a],y[a],x[b],y[b]);
            for (c=1;c<=n;c++)
            {
                k=size(x[b],y[b],x[c],y[c]);
                if (p==k)
                {
                    for (d=1;d<=n;d++)
                    {
                           //if (a!=b && b!=c && c!=d && a!=d && a!=c && b!=d && size(x[a],y[a],x[b],y[b])==size(x[b],y[b],x[c],y[c]) && abs(x[b]-x[d])==abs(x[a]-x[c]) && abs(y[b]-y[d])==abs(y[a]-y[c]) && size(x[b],y[b],x[d],y[d])==size(x[a],y[a],x[c],y[c]))
                           // num++;
                           if (k==size(x[c],y[c],x[d],y[d]) && size(x[c],y[c],x[d],y[d])==size(x[d],y[d],x[a],y[a]) && panta(x[a],y[a],x[b],y[b])+panta(x[b],y[b],x[c],y[c])==0)             
                                   num++;
                    }                                                                                                                                           
                }
            }
        }
    if (num%8) num+=8;
    printf("%ld\n",num/8);
    return 0;
}