Cod sursa(job #284670)

Utilizator DraStiKDragos Oprica DraStiK Data 21 martie 2009 21:21:17
Problema Trapez Scor 100
Compilator cpp Status done
Runda contest01 Marime 0.92 kb
#include <algorithm>
using namespace std;
#define INF 2000000000
#define DIM 2000005
#define MAX 1000
#define ll long long
ll x[MAX],y[MAX];
double p[DIM];
int n,m;
ll nrt;
void read ()
{
	int i;
	scanf ("%d",&n);
	for (i=1; i<=n; ++i)
		scanf ("%lld%lld",&x[i],&y[i]);
}
void panta ()
{
	int i,j;
	for (i=1; i<n; ++i)
		for (j=i+1; j<=n; ++j)
		if (x[i]==x[j])
		    p[++m]=INF;
	    else
	       p[++m]=(double)(y[i]-y[j])/(x[i]-x[j]);
}
void solve ()
{
    int i,nr;
	for (i=1; i<m; ++i)
	{
	    nr=1;
		while (p[i]==p[i+1] && i<m)
        {
                ++i;
                ++nr;
        }
            if (nr%2)
			    nrt+=((nr-1)/2)*nr;
			else
			    nrt+=(nr/2)*(nr-1);
        }
		printf ("%lld",nrt);
}
int main ()
{
    freopen ("trapez.in","r",stdin);
    freopen ("trapez.out","w",stdout);    
    read ();
    panta ();
    sort (p+1,p+m+1);
	solve ();
    return 0;
}