Cod sursa(job #55733)

Utilizator AdidumasDuma Adrian Adidumas Data 28 aprilie 2007 12:19:24
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <math.h>

FILE *in,*out;
int ct,sol[1501],n;
float a[1501][3];

void citire()
  {
   int i;
   in=fopen("triang.in","r");
   fscanf(in , "%d",&n);
   for (i=1 ; i<=n ; i++)
      fscanf(in , "%f%f",&a[i][1],&a[i][2]);
   fclose(in);
  }

int cond(int k)
  {
   float x,y;
   if (k>1)
      if (sol[k-1]>=sol[k]) return 0;
   if (k==3)
     {
      x=(float)sqrt(pow(a[sol[2]][1]-a[sol[1]][1],2)+pow(a[sol[2]][2]-a[sol[1]][2],2));
      y=(float)sqrt(pow(a[sol[3]][1]-a[sol[2]][1],2)+pow(a[sol[3]][2]-a[sol[2]][2],2));
      if (x!=y) return 0;
      y=sqrt(pow(a[sol[3]][1]-a[sol[1]][1],2)+pow(a[sol[3]][2]-a[sol[1]][2],2));
      if (x!=y) return 0;
     }
   return 1;
  }

void back(int k)
  {
   int i;
   for (i=1 ; i<=n ; i++)
     {
      sol[k]=i;
      if (cond(k))
	if (k==3) ct=ct+1;
	else back(k+1);
     }
  }

int main(void)
  {
   citire();
   back(1);
   out=fopen("triang.out","w");
   fprintf(out , "%d",ct);
   fclose(out);
   return 0;
  }