Cod sursa(job #566203)

Utilizator maritimCristian Lambru maritim Data 28 martie 2011 19:29:01
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<malloc.h>

typedef struct _nod
{
	long int a;
	long int b;
	struct _nod *adr;
} nod;

typedef struct
{
	long int x;
	long int y;
} xy;

xy A[1001];
int N;
nod *cap = NULL;
int nr = 0;

void citire(void)
{
	FILE *f = fopen("trapez.in","r");
	
	fscanf(f,"%d ",&N);
	for(int i=1;i<=N;i++)
		fscanf(f,"%d %d",&A[i].x,&A[i].y);
	
	fclose(f);
}

void add(nod*& cap,int a,int b)
{
	nod *nou = (nod*)malloc(sizeof(nod));
	nou->a = A[a].y-A[b].y;
	nou->b = A[a].x-A[b].x;
	nou->adr = cap;
	cap = nou;
}

void creare(void)
{
	for(int i=1;i<=N;i++)
		for(int j=i+1;j<=N;j++)
			add(cap,i,j);
}

void calc(void)
{
	while(cap)
	{
		nod *p = cap->adr;
		while(p)
		{
			if(cap->a*p->b == cap->b*p->a)
				nr ++;
			p = p->adr;
		}
		cap = cap->adr;
	}
}

int main()
{
	FILE *f = fopen("trapez.out","w");
	
	citire();
	creare();
	calc();
	fprintf(f,"%d",nr);
	
	fclose(f);
	return 0;
}