Cod sursa(job #345826)
#include<cstdio>
#include<algorithm>
#define N 15001
#define M 200000
//#define M 37507501
using namespace std;
const double eps=(double)0.0001;
struct triang{float x,y;}v[N];
short int n;
int num;
long long a[M];
bool compar(const long long &a,const long long&b)
{
return a-b<eps;
}
void citire()
{
freopen("triang.in","r",stdin);
freopen("triang.out","w",stdout);
scanf("%hd",&n);
for (short int i=1; i<=n; ++i)
{
scanf("%f",&v[i].x);
scanf("%f",&v[i].y);
for (short int j=1; j<i; ++j)
a[++num]=(v[i].x-v[j].x)*(v[i].x-v[j].x)*1000+(v[i].y-v[j].y)*(v[i].y-v[j].y)*1000;
}
}
void numar()
{
int nr=1,rez=0;
for (int i=1; i<num; ++i)
if (a[i+1]==a[i])
++nr;
else
{
rez+=nr*(nr-1)/2;
nr=1;
}
printf("%d",rez);
}
int main()
{
citire();
sort (a+1,a+1+num,compar);
numar();
return 0;
}