Pagini recente » Cod sursa (job #2680687) | Cod sursa (job #592559) | Cod sursa (job #400351) | Cod sursa (job #261822) | Cod sursa (job #2773907)
#include <bits/stdc++.h>
using namespace std;
const double EPS=1e-5,
c=0.5,
s=sqrt(3)/2;
struct Punct
{
double x,y;
Punct(double xx=0.0,double yy=0.0)
{
x=xx, y=yy;
}
bool operator<(const Punct &A) const
{
if(abs(x - A.x) > EPS)
return x < A.x;
if(abs(y - A.y) > EPS)
return y < A.y;
return 0;
}
};
set<Punct> S;
ifstream f("triang.in");
ofstream g("triang.out");
Punct rotire(const Punct &A,const Punct &B)
{
double dx = B.x - A.x,
dy = B.y - A.y;
/**
Punct C;
C.x = dx * c - dy * s + A.x;
C.y = dx * s + dy * c + A.y;
*/
return Punct(dx * c - dy * s + A.x, dx * s + dy * c + A.y);
}
int main()
{
int nrTr=0,N;
Punct A,M;
f>>N;
while(N--)
{
f>>A.x>>A.y;
for(auto &B : S)
{
M=rotire(A, B);
if(S.find(M) != S.end())
nrTr++;
}
S.insert(A);
}
g<<nrTr;
return 0;
}