Cod sursa(job #483703)

Utilizator cosmyoPaunel Cosmin cosmyo Data 9 septembrie 2010 19:41:20
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
const int NMAX=1005;
using namespace std;
struct punct{long x,y;};
long long rez,n,nr,part;
punct p[NMAX],o[NMAX*NMAX];
vector<punct> v;
void cit()
{ifstream fin("trapez.in");
  fin>>n;
  long i;
   for(i=1;i<=n;++i)
		fin>>p[i].x>>p[i].y;
  fin.close();
}
bool crt(punct a,punct b)
{long x1,y1,x2,y2;
 x1=(p[a.x].x-p[a.y].x);
 y1=(p[a.y].y-p[a.x].y);
 x2=(p[b.x].x-p[b.y].x);
 y2=(p[b.y].y-p[b.x].y);
 return y1*x2<x1*y2;
}
ofstream fout("trapez.out");
void solve()
{long i,j;
 long long k;
 long x1,y1,x2,y2;
 punct a,b;
  for(i=1;i<=n;++i)
	  for(j=i+1;j<=n;++j)
	   if(p[i].x==p[j].x)
		   ++part;
	   else
		o[++nr].x=i,o[nr].y=j;
 sort(o+1,o+nr+1,crt);
 k=1;
 for(i=1;i<=nr;++i)
  for(j=i+1;j<=nr;++j)	
    {a=o[i];b=o[j];
	 x1=(p[a.x].x-p[a.y].x);
	 y1=(p[a.y].y-p[a.x].y);
	 x2=(p[b.x].x-p[b.y].x);
	 y2=(p[b.y].y-p[b.x].y);
	 if(y1*x2==x1*y2)
      ++rez;
	 else
		 break;
	}
 rez+=(part*(part-1))/2;	
}
void afis()
{long i;
  fout<<rez<<'\n';
 fout.close();
}
int main()
{cit();
 solve();
 afis();
 return 0;
}