Cod sursa(job #1826510)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 10 decembrie 2016 15:32:48
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MaxN 1001
#define eps 0.000000000000001
#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)/((double)v[i].x-v[j].x);
            else panta[++Size]=INF;
        }
    sort(panta+1,panta+1+Size);
    int Len=1;
    for(int i=2;i<=Size;i++)
    {
        if(panta[i]-panta[i-1]<=eps)
			Len++;
		else Ans+=Len*(Len-1)/2,Len=1;
    }
	Ans+=Len*(Len-1)/2;
    fprintf(OUT,"%d\n",Ans);
    return 0;
}