Cod sursa(job #681717)

Utilizator tudorsTudor Siminic tudors Data 17 februarie 2012 17:56:21
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <algorithm>
#include <cmath>
#define INF 1000000.0
using namespace std;

int n,i,j;
int A[1005],B[1005];
int q,rez,cont;
double NOU[1000005];

FILE *f,*g;

double do_it(int a, int b)
{
	if (A[a]==A[b])
		return INF;
	//return (1.0 * (d - c)) / (1.0 * (b - a));
	return (1.0 * (B[b] - B[a])) / (1.0 * (A[b] - A[a]));
}

bool equal(double a, double b)
{
	if (fabs(a-b)<=0.000000001)
		return 1;
	return 0;
}

int main()
{
	f=fopen("trapez.in","r");
	g=fopen("trapez.out","w");
	fscanf(f,"%d",&n);
	for (i=1;i<=n;++i)
		fscanf(f,"%d%d",&A[i],&B[i]);
	q=0;
	for (i=1;i<=n-1;++i)
		for (j=i;j<=n;++j)
		{
			q++;
			NOU[q]=do_it(i,j);
		}
	sort(NOU+1,NOU+q+1);
	rez=cont=0;
	for (i=1;i<=q-1;++i)
		if (equal(NOU[i],NOU[i+1]))
			cont++;
		else
		{
			rez+=(cont*(cont+1))/2;
			cont=0;
		}
	fprintf(g,"%d\n",rez);
	fclose(f);
	fclose(g);
	return 0;
}