Pagini recente » Cod sursa (job #1159964) | Diferente pentru home intre reviziile 701 si 702 | Cod sursa (job #162964) | Istoria paginii runda/28feb_ora15.9c/clasament | Cod sursa (job #1900295)
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
struct PUNCT
{
int x,y;
};
ifstream fi("patrate3.in");
ofstream fo("patrate3.out");
int compar(PUNCT A,PUNCT B)
{
if(A.x<B.x)
return 1;
if(A.x==B.x && A.y<B.y)
return 1;
return 0;
}
int n;
PUNCT A[1001],P,Q;
int i,j;
int rez;
double x,y;
char X[100],Y[100];
int s;
int main()
{
fi>>n;
for(i=1;i<=n;i++)
{
fi>>X>>Y;
s=strlen(X);
for(j=0;j<s;j++)
if(X[j]>='0' && X[j]<='9')
A[i].x=A[i].x*10+(X[j]-'0');
s=strlen(Y);
for(j=0;j<s;j++)
if(Y[j]>='0' && Y[j]<='9')
A[i].y=A[i].y*10+(Y[j]-'0');
}
sort(A+1,A+n+1,compar);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
{
P.x=A[i].x-(A[j].y-A[i].y);
P.y=A[i].y+(A[j].x-A[i].x);
Q.x=A[j].x+(A[i].y-A[j].y);
Q.y=A[j].y-(A[i].x-A[j].x);
if(binary_search(A+1,A+n+1,P,compar)&&binary_search(A+1,A+n+1,Q,compar))
rez++;
P.x=A[i].x+(A[j].y-A[i].y);
P.y=A[i].y-(A[j].x-A[i].x);
Q.x=A[j].x-(A[i].y-A[j].y);
Q.y=A[j].y+(A[i].x-A[j].x);
if(binary_search(A+1,A+n+1,P,compar)&&binary_search(A+1,A+n+1,Q,compar))
rez++;
}
fo<<rez/4;
fi.close();
fo.close();
return 0;
}