Pagini recente » Cod sursa (job #150577) | Cod sursa (job #1356083) | Cod sursa (job #750575) | Cod sursa (job #2698566) | Cod sursa (job #1901712)
#include <fstream>
#include <algorithm>
#include <cstring>
#include <set>
#include <string>
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;
}
set<string> S;
string a;
int n;
PUNCT A[1001],P,Q;
int i,j;
int rez;
double x,y;
char X[100],Y[100];
int s;
string cod(PUNCT A,PUNCT B, PUNCT C, PUNCT D)
{
string rez;
PUNCT X[5];
X[0]=A;
X[1]=B;
X[2]=C;
X[3]=D;
sort(X,X+4,compar);
for(int i=0;i<4;i++)
{
string a;
while(X[i].x>0)
{
a+=(X[i].x%10+'0');
X[i].x/=10;
}
while(X[i].y>0)
{
a+=(X[i].y%10+'0');
X[i].y/=10;
}
rez+=a;
}
return rez;
}
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=1;j<=n;j++)
if(i!=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++;
a=cod(A[i],A[j],P,Q);
S.insert(a);
}
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++;
rez++;
a=cod(A[i],A[j],P,Q);
S.insert(a);
}
}
fo<<S.size();
fi.close();
fo.close();
return 0;
}