Pagini recente » Cod sursa (job #341207) | Cod sursa (job #1843422) | Borderou de evaluare (job #1607029) | Cod sursa (job #927655) | Cod sursa (job #2314827)
#include<fstream>
#include<algorithm>
#include<vector>
#include<cmath>
#define x first
#define y second
#define Pair pair<double,double>
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
long long cnt;
int n;
double x,y,xx,yy,mx,my,dx,dy;
vector<Pair> V;
int cmpdouble(Pair i, Pair j){
return (i.x<=j.x-0.00001)||(i.x<j.x+0.00001 && i.y<=j.y-0.00001);
}
int main(){
cin>>n;
V.reserve(n+1);
for(int i=1;i<=n;i++)
cin>>V[i].x>>V[i].y;
sort(V.begin()+1,V.begin()+n+1,cmpdouble);
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++){
mx=(V[i].x+V[j].x)/2;
my=(V[i].y+V[j].y)/2;
dx=abs(mx-V[i].x);
dy=abs(my-V[i].y);
if(V[i].y<V[j].y){
x=mx+dy; y=my-dx;
xx=mx-dy; yy=my+dx;
}
else{
x=mx-dy; y=my-dx;
xx=mx+dy; yy=my+dx;
}
Pair c1=make_pair(x,y);
Pair c2=make_pair(xx,yy);
if(binary_search(V.begin()+1,V.begin()+n+1,c1,cmpdouble) &&
binary_search(V.begin()+1,V.begin()+n+1,c2,cmpdouble))
++cnt;
}
cout<<cnt/2;
cin.close(); cout.close();
return 0;
}