Pagini recente » Cod sursa (job #1242898) | Cod sursa (job #2428772) | Cod sursa (job #168706) | Cod sursa (job #76249) | Cod sursa (job #1731197)
#include <fstream>
#include <vector>
#include <cmath>
#define MOD 100013
#define DIM 1005*502
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
struct point{
int x,y;
}v[1005];
struct segment{
double angle;
long long 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(){
fin>>N;
for(int i=1;i<=N;i++){
int x,y;
char c;
fin>>x>>c>>y;
v[i].x=x*10000+y;
fin>>x>>c>>y;
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)/(double)(v[i].x-v[j].x);
x.length=1LL*squaredist(v[i],v[j]);
x.a=v[i];
x.b=v[j];
int mod=x.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(x.length==min(squaredist(x.a,H[mod][d].a),squaredist(x.a,H[mod][d].b)))
SquaresCount++;
}
H[mod].push_back(x);
}
fout<<SquaresCount/2<<"\n";
}