Pagini recente » Cod sursa (job #2105360) | Cod sursa (job #378103) | Cod sursa (job #2986991) | Cod sursa (job #1193473) | Cod sursa (job #1142863)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct POINT
{
short int x,y;
};
vector <POINT> m;
POINT a[510];
inline void mijloc(POINT A,POINT B)
{
POINT temp;
temp.x=A.x+B.x;
temp.y=A.y+B.y;
m.push_back(temp);
}
inline bool cmp(POINT A,POINT B)
{
if(A.x==B.x)
return A.y<B.y;
return A.x<B.x;
}
int main()
{
int n,i,j,x,y,nr=0,sum=0;
POINT last;
freopen("paralel.in","r",stdin);
freopen("paralel.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%hd%hd",&x,&y);
a[i].x=x;
a[i].y=y;
}
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
mijloc(a[i],a[j]);
sort(m.begin(),m.end(),cmp);
last=m[0];
nr=1;
for(i=1; i<=m.size()-1; i++)
if(m[i].x!=last.x||m[i].y!=last.y)
{
if(nr>1)
{
sum+=nr*(nr-1)/2;
}
last=m[i];
nr=1;
}
else
nr++;
if(nr>1)
{
sum+=nr*(nr-1)/2;
}
printf("%d",sum);
return 0;
}