Pagini recente » Cod sursa (job #95568) | Cod sursa (job #395219) | Cod sursa (job #276765) | Cod sursa (job #2680931) | Cod sursa (job #1322183)
#include <fstream>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
#define NMax 1005
#define epsilon 0.0001f
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n,sol;
int dnr;
struct point
{
double x,y;
bool operator < (const point &t) const
{
if(t.x == x) return t.y < y;
else return t.x < x;
}
} P[NMax];
struct line
{
point a,b;
double l;
bool operator < (const line &t) const
{
if(t.l == l) return t.a < a;
else return t.l > l;
}
} D[NMax*NMax];
int main()
{
int i,j;
f>>n;
for(i=1;i<=n;++i)
{
f>>P[i].x>>P[i].y;
}
for(i=1;i<n;++i) for(j=i+1;j<=n;++j)
{
++dnr;
if((P[i].x == P[j].x && P[i].y < P[j].y) || (P[i].x < P[j].x))
{
D[dnr].a = P[i];
D[dnr].b = P[j];
}
else
{
D[dnr].b = P[i];
D[dnr].a = P[j];
}
D[dnr].l = sqrt( (D[dnr].b.x - D[dnr].a.x)*(D[dnr].b.x - D[dnr].a.x) + (D[dnr].b.y - D[dnr].a.y)*(D[dnr].b.y - D[dnr].a.y) );
}
sort(D+1,D+dnr+1);
int p = 0;
for(i=1;i<=dnr;++i)
{
if(D[i].l - D[i-1].l < epsilon)
{
++p;
}
else
{
sol += p/4;
p=1;
}
}
g<<sol<<"\n";
f.close();
g.close();
return 0;
}