Pagini recente » Cod sursa (job #2065607) | Cod sursa (job #520141) | Cod sursa (job #782728) | Cod sursa (job #2283242) | Cod sursa (job #2415307)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
const int NMAX = 1005;
int rasp=0,n;
struct coord
{
double x;
double y;
};
coord v[NMAX];
bool cmp(coord a,coord b)
{
if(a.x==b.x) return a.y>b.y;
return a.x>b.x;
}
bool cautbin(coord a)
{
int st=1,dr=n,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(a.x==v[mij].x and a.y==v[mij].y)
return 1;
if(cmp(v[mij],a)==1) st=mij+1;
else dr=mij-1;
}
return 0;
}
void verif(coord p1,coord p2)
{
coord mij;
mij.x=(p1.x+p2.x)/2;
mij.y=(p1.y+p2.y)/2;
coord a,b;
double mx=abs(p1.x-mij.x);
double my=abs(p1.y-mij.y);
if(p1.y>p2.y)
{
a.x=mij.x-my;
a.y=mij.y+mx;
b.y=mij.y-mx;
b.x=mij.x+my;
}
else
{
a.x=mij.x-my;
a.y=mij.y-mx;
b.y=mij.y+mx;
b.x=mij.x+my;
}
if(cautbin(a)==1 and cautbin(b)==1) rasp++;
}
int main()
{
fin >> n;
double aa,bb;
for(int i=1;i<=n;i++)
{
fin >> aa >> bb;
v[i].x=round(aa*10000.0);
v[i].y=round(bb*10000.0);
}
sort(v+1,v+n+1,cmp);
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
verif(v[i],v[j]);
}
}
fout << rasp/2;
return 0;
}