Cod sursa(job #351093)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 26 septembrie 2009 19:52:05
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

FILE *f,*s;

int n,i,j,k,l;

struct punct
{
	long long int x;
	long long 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,"%lld %lld",&v1[i].x,&v1[i].y);
	
	k=1;
	for(i=1;i<n;i++)
	{
		for(j=i+1;j<=n;j++)
		{	
			v2[k].x=v1[i].x-v1[j].x;
			v2[k].y=v1[i].y-v1[j].y;
			
			if(v2[k].x<0)
				v2[k].x*=-1;
			
			if(v2[k].y<0)
				v2[k].y*=-1;
			
			k++;
		}
	}	
	
	k--;
	
	sort(v2+1,v2+k+1,cmp);
	
	int rez=0;
	for(i=2;i<=k;i++)
	{
		if(v2[i].x*v2[i-1].y==v2[i].y==v2[i-1].x)
			rez++;
	}	
	
	int r=0;
	
	for(i=1;i<=rez;i++)
		r+=i*(rez-i);
	
	if(rez==1)
		r=1;
		
	fprintf(s,"%d",r);
	
	fclose(s);
	
	return 0;
}