Pagini recente » Cod sursa (job #889781) | Cod sursa (job #2455094) | Cod sursa (job #1578770) | Cod sursa (job #2468797) | Cod sursa (job #1053515)
#include<fstream>
#include<algorithm>
#include<cmath>
#define EPS 0.000001
using namespace std;
int n,sol;
struct Punct{double x,y;};
Punct v[1010];
inline bool Sortare(Punct A,Punct B)
{
if(fabs(A.x-B.x)<EPS)
return A.y<B.y;
return A.x<B.x;
}
inline bool Exista(Punct A)
{
int st,dr,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(Sortare(v[mij],A)==true)
st=mij+1;
else
dr=mij-1;
}
return false;
}
int main()
{
int i,j;
Punct A,B;
ifstream fin("patrate3.in");
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y;
fin.close();
sort(v+1,v+n+1,Sortare);
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))
sol++;
}
}
sol/=2;
ofstream fout("patrate3.out");
fout<<sol<<"\n";
fout.close();
return 0;
}