Pagini recente » Cod sursa (job #255904) | Cod sursa (job #1906081) | Cod sursa (job #1541086) | Cod sursa (job #747479) | Cod sursa (job #3235970)
#include <fstream>
#include <cmath>
#include <set>
using namespace std;
const double EPS = 1e-5,
c = 0.5, /// cos(60)
s = sqrt(3) / 2; /// sin(60)
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;
ofstream g("triang.out");
ifstream f("triang.in");
Punct rotire(const Punct &A, const Punct &B)
{
double dx = B.x - A.x,
dy = B.y - A.y;
return Punct(dx * c - dy * s + A.x, dx * s + dy * c + A.y);
}
int main()
{
int N,nrTr = 0;
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;
}