Pagini recente » Cod sursa (job #2163013) | Cod sursa (job #1280052) | Cod sursa (job #2684354) | Cod sursa (job #2669431) | Cod sursa (job #1083250)
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
double eps=0.0001;
int n, nr, i, j;
struct pct{
double x,y;
} a,b,v[1001];
inline bool cmp(pct p,pct q)
{ if(fabs(p.x-q.x)<eps) return p.y<q.y;
return p.x<q.x;
}
bool find(pct a)
{ int mij,st=1,dr=n;
while(st<=dr)
{ mij=(st+dr)/2;
if(fabs(v[mij].x-a.x)<eps && fabs(v[mij].y-a.y)<eps) return true;
if(cmp(v[mij],a)) st=mij+1; else dr=mij-1;
}
return false;
}
int main(){
f>>n;
for(i=1;i<=n;i++) f>>v[i].x>>v[i].y;
sort(v+1,v+n+1,cmp);
for(i=1;i<n;i++)
for(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(find(a) && find(b)) nr++;
}
g<<nr/2<<"\n";
return 0;
}