Pagini recente » Cod sursa (job #2824653) | Cod sursa (job #236916) | Cod sursa (job #628907) | Cod sursa (job #1280878) | Cod sursa (job #1639952)
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct eu{double x,y;};
eu v[1001];
struct eu2{double x,y,val;};
eu2 vc[1000001];
int i,j,n,m,k,cate;
bool sorting(eu2 a,eu2 b)
{
if(a.x<b.x||a.x==b.x&&a.y<b.y||a.x==b.x&&a.y==b.y&&a.val<b.val)
return 1;
return 0;
}
int main ()
{
freopen("patrate3.in","r",stdin);
freopen("patrate3.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%lf%lf",&v[i].x,&v[i].y);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
vc[++cate].x=(v[i].x+v[j].x)/2;
vc[cate].y=(v[i].y+v[j].y)/2;
vc[cate].val=(v[i].x-v[j].x)*(v[i].x-v[j].x)+(v[i].y-v[j].y)*(v[i].y-v[j].y);
}
sort(vc+1,vc+cate+1,sorting);
int l=1,s=0;
for(i=2;i<=cate;i++)
{
if(vc[i].x==vc[i-1].x&&vc[i].y==vc[i-1].y&&vc[i].val==vc[i-1].val)
l++;
else
{
s=s+l*(l-1)/2;
l=1;
}
}
printf("%d",s);
return 0;
}