Cod sursa(job #42909)

Utilizator g3ppyStoian Vlad g3ppy Data 29 martie 2007 16:56:56
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <fstream.h>
#include <math.h>
#include <stdio.h>
FILE* fout;
struct pct {long x,y;};
pct a[1000],b[1000];
long aux,x0,y0,x1,y1,x2,y2,x3,y3,mijx,mijy,dx,dy;

int comp(long e, double r)
   {
   if (r-e>-0.00001&&r-e<0.00001) return 0;
   return 1;
   }


int main()
{int i,n,k,ok,j,p=0;
long xxi,yyi;
double xx,yy;
ifstream fin("patrate3.in");
fout=fopen("patrate3.out","wt");
fin>>n;
for (i=0;i<n;i++)
    {
    fin>>xx>>yy;
    xx*=1000000;
    xxi=xx;
    yy*=1000000;
    yyi=yy;
    if (comp(xxi,xx)) xxi++;
    if (comp(yyi,yy)) yyi++;
    a[i].x=xxi;
    a[i].y=yyi;
    }
for(i=0;i<n-1;i++)
   for (j=i+1;j<n;j++)
       {
       x0=a[i].x;
       y0=a[i].y;
       x1=a[j].x;
       y1=a[j].y;
       if (x0>x1)
	  {
	  aux=x1;
	  x1=x0;
	  x0=aux;
	  aux=y1;
	  y1=y0;
	  y0=aux;
	  }
       mijx=(x0+x1)/2;
       mijy=(y0+y1)/2;

       dx=mijx-x0;
       dy=mijy-y0;
       if(dx<0) dx*=-1;
       if(dy<0) dy*=-1;

       if (y0<y1)
	  {
	  x2=mijx+dy;
	  y2=mijy-dx;
	  x3=mijx-dy;
	  y3=mijy+dx;
	  }
       else
	  {
	  x2=mijx-dy;
	  y2=mijy-dx;
	  x3=mijx+dy;
	  y3=mijy+dx;
	  }
       ok=0;
       for (k=0;k<=(n-1)/2;k++)
	  {
	  if (x2==a[k].x&&y2==a[k].y) ok++;
	  else
	     if (x2==a[n-k-1].x&&y2==a[n-k-1].y) ok++;

	  if (x3==a[k].x&&y3==a[k].y) ok++;
	   else
	     if (x3==a[n-k-1].x&&y3==a[n-k-1].y) ok++;

	  if (ok==2) break;
	  }
       if (ok>=2) p++;



       }

fprintf(fout,"%d\n",p/2);
return 0;

}