Pagini recente » Cod sursa (job #545628) | Cod sursa (job #336435) | Cod sursa (job #2837206) | Cod sursa (job #593267) | Cod sursa (job #1014659)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("patrate3.in"); ofstream g("patrate3.out");
const double EPS=0.000001;
int n,nr,i,j;
struct Punct{double x,y;} A,B,v[1001];
inline double modul(double x)
{ return x<0 ? -x : x;}
inline bool cmp(Punct P,Punct Q)
{ if(modul(P.x-Q.x)<EPS) return P.y<Q.y;
return P.x<Q.x;
}
inline bool este(Punct A)
{ int mij,st=1,dr=n;
while(st<=dr)
{ mij=(st+dr)/2;
if(modul(v[mij].x-A.x)<EPS && modul(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(este(A) && este(B)) nr++;
}
g<<nr/2<<"\n"; g.close(); return 0;
}