Cod sursa(job #358843)

Utilizator Abi79Iordache Albert Abi79 Data 24 octombrie 2009 18:13:52
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

FILE *f,*s;

int n,i,j,k,rez;

struct punct
{
	int x;
	int y;
};	

punct v1[1005],v2[1000005];

int cmp(punct a, punct b)
{
	if(a.x!=b.x)
		return a.x<b.x;
	else
		return a.y<b.y;
}

int main()
{
	f=fopen("trapez.in","r");
	s=fopen("trapez.out","w");
	
	fscanf(f,"%d",&n);
	
	for(i=1;i<=n;i++)
		fscanf(f,"%d %d",&v1[i].x,&v1[i].y);
	
	for(i=1;i<n;i++)
	{	
		for(j=i+1;j<=n;j++)
		{
			k++;
			
			v2[k].x=v1[j].y-v1[i].y;
			v2[k].y=v1[j].x-v1[i].x;
		}	
	}
	/*
	for(i=1;i<=k;i++)
	{
		while(v2[i].x%2==0&&v2[i].y%2==0)
		{
			v2[i].x/=2;
			v2[i].y/=2;
		}  
     
		for(j=3;j<=v2[i].x && j<=v2[i].y;j+=2)
		{
			while(v2[i].x%j==0&&v2[i].y%j==0)
			{
				v2[i].x/=j;
				v2[i].y/=j;
			}	  
		}
	}	
	
	sort(v2+1,v2+k+1,cmp);
	*/
	for(i=1;i<k;i++)
	{	
		for(j=i+1;j<=k;j++)
		{
			if(v2[i].x*v2[j].y==v2[i].y*v2[j].x)
				rez++;
		}	
	}
	
	fprintf(s,"%d",rez);
	
	fclose(s);
	
	return 0;
}