Pagini recente » Cod sursa (job #2040869) | Rating Victor Olaru (Ktekosi) | Cod sursa (job #1330014) | Cod sursa (job #880503) | Cod sursa (job #1396288)
#include <cstdio>
#include <vector>
#include <cmath>
#define MOD 50013
using namespace std;
struct point{
int x,y;
}v[1005];
struct segment{
float angle;
float length;
point a,b;
};
long long int squaredist(point a,point b){
return 1LL*(a.x-b.x)*(a.x-b.x)+1LL*(a.y-b.y)*(a.y-b.y);
}
int Area(point p1,point p2,point p3){
return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y);
}
vector <segment> H[MOD];
int N,nr;
int SquaresCount;
int main(){
freopen("patrate3.in","r",stdin);
freopen("patrate3.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;i++){
int x,y;
char c;
scanf("%d%c%d",&x,&c,&y);
if(x>=0)
v[i].x=(x*10000+y);
else
v[i].x=x*10000-y;
scanf("%d%c%d",&x,&c,&y);
if(x>=0)
v[i].y=x*10000+y;
else
v[i].y=x*10000-y;
}
for(int i=1;i<N;i++)
for(int j=i+1;j<=N;j++){
segment x;
x.angle=(v[i].y-v[j].y)/(float)(v[i].x-v[j].x);
long long Length=1LL*squaredist(v[i],v[j]);
x.length=sqrt((double)Length);
x.a=v[i];
x.b=v[j];
int mod=Length%MOD;
for(int d=0;d<H[mod].size();d++)
if(x.angle==H[mod][d].angle && x.length==H[mod][d].length){
if(Length==min(squaredist(x.a,H[mod][d].a),squaredist(x.a,H[mod][d].b)))
SquaresCount++;
}
H[mod].push_back(x);
}
printf("%d\n",SquaresCount/2);
}