Pagini recente » Cod sursa (job #1019154) | Cod sursa (job #537295) | Cod sursa (job #761411) | Cod sursa (job #2282882) | Cod sursa (job #1706801)
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int INF = 999999999;
const double eps = 2.e-8;
struct POINT{
int x,y;
}p[1005];
double panta(POINT P1, POINT P2)
{
if(P1.x==P2.x)
return INF;
return 1.0*(P2.y-P1.y)/(P2.x-P1.x);
}
bool paralel(double m1,double m2)
{
if(fabs(m1-m2)<eps)
return 1;
return 0;
}
double m[500000];
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,ans,num,tmpx,tmpy,k,i,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d %d",&tmpx,&tmpy);
p[i].x=tmpx;
p[i].y=tmpy;
}
k=0;
for(i=1;i<=n;++i)
for(j=i+1;j<=n;++j)
{
m[++k]=panta(p[i],p[j]);
}
sort(m+1,m+k+1);
num=1;
ans=0;
for(i=2;i<=k;++i)
{
if(m[i]==m[i-1])
++num;
else
{
ans+=num*(num-1)/2;
num=1;
}
}
ans+=num*(num-1)/2;
printf("%d",ans);
return 0;
}