Pagini recente » Cod sursa (job #1163444) | Cod sursa (job #1219163) | Cod sursa (job #2245888) | Cod sursa (job #1256837) | Cod sursa (job #1035813)
#include <cstdio>
#include <algorithm>
#define fmic 0.00001
using namespace std;
struct punct
{
double x,y;
};
punct v[1010],a,b;
int n,i,j,nr;
inline double modul(double a)
{
return a<0?-a:a;
}
inline bool comp(punct a,punct b)
{
if(modul(a.x-b.x)<fmic) return a.y<b.y;
else return a.x<b.x;
}
inline bool exista(punct a)
{
int mij,st=1,dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(modul(v[mij].x-a.x)<fmic && modul(v[mij].y-a.y)<fmic) return true;
if(comp(a,v[mij])) dr=mij-1;
else st=mij+1;
}
return false;
}
int main()
{
freopen("patrate3.in", "r", stdin);
freopen("patrate3.out", "w", stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%lf%lf",&v[i].x,&v[i].y);
sort(v+1,v+n+1,comp);
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(exista(a) && exista(b)) nr++;
}
}
printf("%d",nr/2);
fclose(stdin);fclose(stdout);
return 0;
}