Pagini recente » Cod sursa (job #2807886) | Cod sursa (job #3030326) | Cod sursa (job #2310212) | Cod sursa (job #2280099) | Cod sursa (job #2693325)
#include <fstream>
#include<algorithm>
#include<cmath>
#define e 0.00001
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
struct punct{
double x,y;
}v[1005];
int n;
int cmp(punct a,punct b)
{
if(abs(a.x-b.x)<e)
return(a.y<b.y);
return (a.x<b.x);
}
int cautare(punct a,int s)
{
int st,dr,mj;
st=s+1;dr=n;
while(st<=dr)
{
mj=(st+dr)/2;
if(abs(v[mj].x-a.x)<e&&(v[mj].y-a.y)<e)return 1;
else if((abs(v[mj].x-a.x)<e&&v[mj].y<a.y)||v[mj].x<a.x)st=mj+1;
else dr=mj-1;
}
return 0;
}
int main()
{ int i,nr=0,j;
punct a,b;
cin>>n;
for(i=1;i<=n;i++)cin>>v[i].x>>v[i].y;
sort(v+1,v+n+1,cmp);
//for(i=1;i<=n;i++)cout<<v[i].x<<" "<<v[i].y<<endl;
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(cautare(a,i)&&cautare(b,j)){nr++;
}
}
cout<<nr;
}