Cod sursa(job #1818837)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 29 noiembrie 2016 21:20:43
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MaxN 1001
#define eps 0.00000001
#define INF 2140000000
#define MAX 131072
using namespace std;

FILE *IN,*OUT;

int N,Size=0;
long long Ans=0;
struct point
{
	int x,y;
}v[MaxN];
double panta[MaxN*MaxN];
int main()
{
	IN=fopen("trapez.in","r");
	OUT=fopen("trapez.out","w");
	
	fscanf(IN,"%d",&N);
	for(int i=1;i<=N;i++)
		fscanf(IN,"%d%d",&v[i].x,&v[i].y);
	for(int i=1;i<N;i++)
		for(int j=i+1;j<=N;j++)
		{
			if((v[i].x-v[j].x)!=0)
				panta[++Size]=(double)(v[i].y-v[j].y)/(v[i].x-v[j].x);
			else panta[++Size]=INF;
		}
	sort(panta+1,panta+1+Size);
	int Start=1;
	for(int i=1;i<=Size;i++)
	{
		if(abs(panta[Start]-panta[i])>eps)
		{
			Ans+=(i-Start-1)*(i-Start)/2;
			Start=i;
		}
	}
	fprintf(OUT,"%d",Ans);
	return 0;
}