Cod sursa(job #326084)

Utilizator Andrei200Andrei200 Andrei200 Data 23 iunie 2009 18:53:28
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
#include <algorithm>   
  
using namespace std;   

#define file_in "trapez.in"
#define file_out "trapez.out"

#define Nmax 1010

struct panta
{
	int x,y;
}
p[Nmax*Nmax];

int n,t,nr,maxim,a,b;
int x[Nmax];
int y[Nmax];

int cmp(panta a, panta b)   
{   
    return (a.x<b.x);   
}   

int main()
{
	int i,j;
	freopen(file_in,"r",stdin);
		
	scanf("%d", &n);
	for (i=1;i<=n;++i)
		 scanf("%d %d", &x[i],&y[i]);
	fclose(stdin);
	
	freopen(file_out,"w",stdout);
	
	nr=0;
	for (i=1;i<n;++i)
		 for (j=i+1;j<=n;++j)
		 {
			if (x[i]-x[j]==0) a++;
            else 
			if (y[i]-y[j]==0) b++;
			else
			{
  	         nr++;
			 p[nr].x=y[j]-y[i];
			 p[nr].y=x[j]-x[i];
			}
		 }
	
	sort(p+1,p+nr+1,cmp); 	 
		 
	t=0;
	maxim=0;
	for (i=1;i<nr;++i)
	{
		if (p[i].x*p[i+1].y==p[i].y*p[i+1].x)
				   t++;
		else
			t=0;
		if (t>maxim) maxim=t;
	}
	
	printf("%d", maxim*(maxim-1)/2+a*(a-1)/2+b*(b-1)/2);
	
	fclose(stdout);
	
	return 0;
}