Pagini recente » Cod sursa (job #2369264) | Cod sursa (job #2851678) | Cod sursa (job #2491013) | Cod sursa (job #705111) | Cod sursa (job #2625500)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
double eroare=0.0001;
int n, nr;
struct punct
{
double x,y;
}a, b ,v[1010];
bool compara(punct a, punct b)
{
if(abs(a.x-b.x) < eroare)
return a.y<b.y;
return a.x<b.x;
}
bool cauta(punct a)
{
int mijloc, stanga, dreapta;
stanga=1, dreapta=n;
while(stanga<=dreapta)
{
mijloc=(stanga+dreapta)/2;
if(abs(v[mijloc].x-a.x)<eroare && abs(v[mijloc].y-a.y)<eroare)
return true;
if(compara(v[mijloc],a))
stanga=mijloc+1;
else
dreapta=mijloc-1;
}
return false;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i].x>>v[i].y;
}
sort(v+1,v+n+1,compara);
for(int i=1 ; i<n ; i++)
for(int j=i+1 ; j<=n ; j++)
{ a.x=v[i].x+v[i].y-v[j].y;
a.y=v[i].y+v[j].x-v[i].x;
b.x=v[j].x+v[i].y-v[j].y;
b.y=v[j].y+v[j].x-v[i].x;
if(cauta(a) && cauta(b))
nr++;
}
fout<<nr/2;
}