Pagini recente » Cod sursa (job #207114) | Cod sursa (job #744028) | Cod sursa (job #205399) | Cod sursa (job #2918914) | Cod sursa (job #1290853)
#include <fstream>
#include<cmath>
#include<algorithm>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n,i,j,nr;
#define E 0.0000000001
struct puncte {
double x,y;}v[1010];
bool compar(puncte a,puncte b)
{
if(fabs(a.x-b.x)<=E)
return a.y<b.y;
else
return a.x<b.x;
}
int cautare(puncte a)
{
int l,r,mij;
l=1;
r=n;
while(l<=r)
{
mij=(l+r)/2;
if (fabs(v[mij].x-a.x)<=E&&fabs(v[mij].y-a.y)<=E)
return 1;
else
if (compar(a,v[mij]))
r=mij-1;
else
l=mij+1;
}
return 0;
}
int main()
{f>>n;
for(i=1;i<=n;i++)
f>>v[i].x>>v[i].y;
sort(v+1,v+n+1,compar);
nr=0;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
puncte a,b;
a.x = v[i].x + v[i].y - v[j].y;
b.x = v[j].x + v[i].y - v[j].y;
a.y = v[i].y + v[j].x - v[i].x;
b.y = v[j].y + v[j].x - v[i].x;
if(cautare(a)&&cautare(b))
nr++;
}
g<<nr/2;
return 0;
}