Pagini recente » 123345 | Cod sursa (job #1860473) | Cod sursa (job #2481473) | Cod sursa (job #68582) | Cod sursa (job #2625257)
#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,Dudix[1001];
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(Dudix[mijloc].x-a.x) < eroare && abs(Dudix[mijloc].y-a.y) < eroare)
return true;
if(compara(Dudix[mijloc],a))
stanga=mijloc+1;
else
dreapta=mijloc-1;
}
return false;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>Dudix[i].x>>Dudix[i].y;
}
sort(Dudix+1,Dudix+n+1,compara);
for(int i=1 ; i<n ; i++)
for(int j=i+1 ; j<=n ; j++)
{ a.x=Dudix[i].x+Dudix[i].y-Dudix[j].y;
a.y=Dudix[i].y+Dudix[j].x-Dudix[i].x;
b.x=Dudix[j].x+Dudix[i].y-Dudix[j].y;
b.y=Dudix[j].y+Dudix[j].x-Dudix[i].x;
if(cauta(a) && cauta(b))
nr++;
}
fout<<nr/2;
return 0;
}