Pagini recente » Cod sursa (job #789243) | Cod sursa (job #255309) | Cod sursa (job #911080) | Cod sursa (job #2126773) | Cod sursa (job #1981403)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
struct POINT
{
int x,y;
};
vector<POINT>v;
const double eps=1.e-14;
const double INF=2000000000;
double panta (POINT A,POINT B)
{
if (A.x==B.x)
return INF;
else return (1.0*B.y-A.y)/(B.x-A.x);
}
vector <double>p;
int main()
{
freopen ("trapez.in","r",stdin);
freopen ("trapez.out","w",stdout);
int n,tempx,tempy,i,j,tr=0,nr;
POINT aux;
scanf ("%d",&n);
for (i=1;i<=n;i++)
{
scanf ("%d%d",&tempx,&tempy);
aux.x=tempx;
aux.y=tempy;
v.push_back(aux);
}
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
p.push_back(panta(v[i],v[j]));
sort(p.begin(),p.end());
nr=1;
for (i=0;i<p.size()-1;i++)
{
if (p[i]==p[i+1])
nr++;
else tr+=nr*(nr-1)/2,nr=1;
}
printf ("%d ", tr);
return 0;
}