Cod sursa(job #155928)

Utilizator petroMilut Petronela petro Data 12 martie 2008 11:35:02
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<math.h>
#define M 1000
int x[M],y[M];
int main()
{int i,n,j,k,l,ok,m1,m2,d1,d2,ok1;

FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");

fscanf(f,"%d",&n);
k=0;

for(i=1;i<=n;i++)
 {fscanf(f,"%d",&x[i]);
  fscanf(f,"%d",&y[i]);}

 for(i=1;i<=n-3;i++)
  for(j=1+1;j<=n-2;j++)
  {ok=0;

   if(x[i]==x[j]) ok=1;

   if (ok==0) m1=(y[i]-y[j])/(x[i]-x[j]);

   d1=sqrt((x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]));

   for(k=j+1;k<=n-1;k++)
    for(l=k+1;l<=n;l++)
     {ok1=0;

     if(x[k]==x[l]) ok1=1;

     if(ok1==0) m2=(y[k]-y[l])/(x[k]-x[l]);

      d2=sqrt((x[l]-x[k])*(x[l]-x[k])+(y[l]-y[k])*(y[l]-y[k]));

      if((ok==ok1)&&(ok==1)) {if (d1==d2) k+=2;} 
      else {if(m1==m2) {if(d1==d2) k+=2;
			else k++;}}

      }
    }

fprintf(g,"%d",k);

fclose(f);
fclose(g);
return 0;
}