Cod sursa(job #77067)

Utilizator alex23alexandru andronache alex23 Data 12 august 2007 21:09:42
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>

struct pct{
int x,y;
};

int n,i,a[1000000],b[1000000],j,q,p,aux,x;
pct v[1005];



int main()
{FILE *fin,*fout;

fin=fopen("trapez.in","r");
fscanf(fin,"%d",&n);
for (i=1;i<=n;i++)
   fscanf(fin,"%d %d",&v[i].x,&v[i].y);
fclose(fin);


for (i=1;i<n;i++)
  for (j=i+1;j<=n;j++)
    {p++;
     a[p]=v[i].y-v[j].y;
     b[p]=v[i].x-v[j].x;
     if ((a[p]<0) && (b[p]<0)) {a[p]=-a[p];b[p]=-b[p];}
	       else
	   if (a[p]<0) a[p]=-a[p];
		  else
	      if (b[p]<0) b[p]=-b[p];
     }
x=0;
while (x==0)
 {x=1;
  for (i=1;i<p;i++)
    for (j=i+1;j<=p;j++)
      if ((a[i]>0)&&(a[j]<0)) {aux=a[i];a[i]=a[j];a[j]=aux;
			       aux=b[i];b[i]=b[j];b[j]=aux;
			       x=0;
			       }
	      else
	if ((a[i]>0)&&(a[j]>0))
		 {if (a[i]*b[j]>a[j]*b[i]){aux=a[i];a[i]=a[j];a[j]=aux;
					   aux=b[i];b[i]=b[j];b[j]=aux;
					   x=0;
					   }
		  }
	     else
	  if ((a[i]<0)&&(a[j]<0))
		  if (a[i]*b[j]<a[j]*b[i]) {aux=a[i];a[i]=a[j];a[j]=aux;
					    aux=b[i];b[i]=b[j];b[j]=aux;
					    x=0;
					    }
  }


for (i=1;i<p;i++)
  if (a[i]*b[i+1]==a[i+1]*b[i])
	      {j=1;
	       while (a[i]*b[i+j]==a[i+j]*b[i]) {j++;q++;}
	       }

fout=fopen("trapez.out","w");
fprintf(fout,"%d",q);
fclose(fout);

return 0;
}