Cod sursa(job #1289505)

Utilizator dorinmoldovanMoldovan Dorin dorinmoldovan Data 9 decembrie 2014 22:23:05
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include "stdio.h"
#include <algorithm>
using namespace std;

FILE *f, *g;
int a[1001], b[1001], n;
int sum;
long double panta[1000001];
int index = 0;
int panta_0 = 0;
int length, number;
long double current;

int main()
{
	f = fopen("trapez.in", "r");
	g = fopen("trapez.out", "w");

	fscanf(f, "%d", &n);

	for(int i = 1; i <= n; i++)
		fscanf(f, "%d %d", &a[i], &b[i]);

	for(int i = 1; i < n; i++)
		for(int j = i+1; j <= n; j++)
		{
			if(a[i] == a[j])
				panta_0 = panta_0 + 1;
			else
			{
				panta[++index] = (double) (b[j] - b[i]) / (a[j] - a[i]);
			}
		}

	sort(panta+1, panta+1+index);

	length = index;
	number =  1;
	current = panta[1];

	sum = 0;

	for(int i = 2; i <= length; i++)
	{
		if(panta[i] != current)
		{
			sum = sum + (number - 1) * number / 2;
			number = 0;
			current = panta[i];
		}
		number = number + 1;
	}

	sum = sum + (number - 1) * number / 2;

	if(panta_0 != 0)
		sum = sum + (panta_0 - 1) * panta_0 / 2;

	fprintf(g, "%d", sum);
	
	fclose(f);
	fclose(g);

	return 0;
}