Pagini recente » Cod sursa (job #1560172) | Cod sursa (job #1491828) | Cod sursa (job #866170) | Cod sursa (job #1523646) | Cod sursa (job #1558054)
#include<fstream>
#include<algorithm>
#define eps 0.000001
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int i,j,n,nr;
struct pc{double x,y;};
pc p1,p2,p3,p4,v[10009];
double abss(double x)
{
if(x<0)
return -x;
return x;
}
bool cmp(pc a,pc b)
{
if(abss(a.x-b.x)<eps)
{
return a.y<b.y;
}
return a.x<b.x;
}
int cb(pc a)
{
int li=1,ls=n,mij;
while(li<=ls)
{
mij=(li+ls)/2;
if(abs(a.x-v[mij].x)<=eps&&abs(a.y-v[mij].y)<=eps&&mij!=i&&mij!=j)
return 1;
else
if(cmp(a,v[mij]))
ls=mij-1;
else
li=mij+1;
}
return 0;
}
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)
{
p1=v[i];
p2=v[j];
p3.x=p1.x+p1.y-p2.y;
p3.y=p1.y+p2.x-p1.x;
p4.x=p2.x+p1.y-p2.y;
p4.y=p2.y+p2.x-p1.x;
if(cb(p3))
{
if(cb(p4))
++nr;
}
}
g<<nr/2<<'\n';
return 0;
}