Pagini recente » Cod sursa (job #660835) | Cod sursa (job #865827) | Cod sursa (job #2881232) | Cod sursa (job #2421334) | Cod sursa (job #1140237)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n,i,sol,j,st,dr,mid,ok,semn;
int x1,x2,x3,x4,yy1,yy2,y3,y4,xg,yg,x;
struct point {
int x;
int y;
} v[1005];
char s[20];
bool cmp(const point &a, const point &b) {
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int main() {
f>>n;
for(j=1;j<=n;j++) {
f>>s;
semn=1;x=0;
if(s[0]=='-')
semn=-1,x=1;
for(i=x;s[i]!=0;i++)
if(s[i]!='.') {
v[j].x=v[j].x*10+(s[i]-'0')*1.0;
}
v[j].x*=2*semn;
f>>s;
semn=1;x=0;
if(s[0]=='-')
semn=-1,x=1;
for(i=x;s[i]!=0;i++)
if(s[i]!='.') {
v[j].y=v[j].y*10+(s[i]-'0')*1.0;
}
v[j].y*=2*semn;
}
sort(v+1,v+n+1,cmp);
sol=0;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++) {
x1=v[i].x;yy1=v[i].y;
x3=v[j].x;y3=v[j].y;
xg=(x1+x3);yg=(yy1+y3);
xg/=2;yg/=2;
x2=xg-(y3-yg);yy2=yg+(xg-x1);
x4=xg+(y3-yg);y4=yg-(xg-x1);
st=1;dr=n;ok=1;
while(st<=dr) {
mid=st+(dr-st)/2;
if(v[mid].x>x2)
dr=mid-1;
else
if(v[mid].x<x2)
st=mid+1;
else
if(v[mid].y>yy2)
dr=mid-1;
else
st=mid+1;
}
if(v[dr].x!=x2 || v[dr].y!=yy2 || yy2!=int(yy2) || x2!=int(x2))
ok=0;
st=1;dr=n;
while(st<=dr) {
mid=st+(dr-st)/2;
if(v[mid].x>x4)
dr=mid-1;
else
if(v[mid].x<x4)
st=mid+1;
else
if(v[mid].y>y4)
dr=mid-1;
else
st=mid+1;
}
if(v[dr].x!=x4 || v[dr].y!=y4 || y4!=int(y4) || x4!=int(x4))
ok=0;
if(ok)
sol++;
}
g<<sol/2<<"\n";
return 0;
}