Pagini recente » Cod sursa (job #1564801) | Cod sursa (job #427491) | Cod sursa (job #1578528) | Cod sursa (job #624304) | Cod sursa (job #1926747)
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
struct punct{double x,y;};
punct v[1001];
bool cmp(punct a,punct b){
if(fabs(a.y-b.y)<=1e-4&&fabs(a.x-b.x)<=1e-4)
return true;
else if(fabs(a.y-b.y)<=1e-4)
return a.x<b.x;
else
return a.y<b.y;
}
bool findt(punct a,int n){
int st=1,dr=n,poz,m;
poz=n;
while(st<=dr){
m=(st+dr)/2;
if(cmp(a,v[m])){
dr=m-1;
poz=m;
}else
st=m+1;
}
if(fabs(a.x-v[poz].x)<=1e-4&&fabs(a.y-v[poz].y)<=1e-4)
return true;
else
return false;
}
int main(){
int n,i,nr,j;
punct c,d;
double dx,dy;
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,cmp);
nr=0;
for(i=1;i<=n-3;i++)
for(j=i+1;j<=n-2;j++){
dx=v[j].x-v[i].x;
dy=v[j].y-v[i].y;
if(dx>=0&&dy>=0){
c.x=v[j].x-dy;
c.y=v[j].y+dx;
d.x=v[i].x-dy;
d.y=v[i].y+dx;
if(findt(d,n)&&findt(c,n))
nr++;
}
}
printf("%d",nr);
return 0;
}