Pagini recente » Cod sursa (job #1003312) | Cod sursa (job #954344) | Clasament pregatire_lot_juniori_1 | Monitorul de evaluare | Cod sursa (job #2250897)
#include <fstream>
#include <map>
#define COS 0.5
#define SIN 0.866025405
#define VAL 1505
#define LL long long
using namespace std;
ifstream fin("triang.in");
ofstream fout("triang.out");
int N, i, j, ANS;
double X, Y, X1, Y1;
LL A, B;
pair <double, double> P[VAL];
map < pair <LL, LL>, bool > H;
int main()
{
fin >> N;
for (i=1; i<=N; i++)
{
fin >> P[i].first >> P[i].second;
X=P[i].first*1000;
Y=P[i].second*1000;
A=X;
B=Y;
H[{A, B}]=true;
}
for (i=1; i<=N; i++)
{
for (j=i+1; j<=N; j++)
{
X=P[i].first-P[j].first;
Y=P[i].second-P[j].second;
X1=X*COS-Y*SIN;
Y1=X*SIN+Y*COS;
X1+=P[j].first;
Y1+=P[j].second;
X1*=1000;
Y1*=1000;
A=X1;
B=Y1;
if (H[{A, B}]==true)
ANS++;
X=P[j].first-P[i].first;
Y=P[j].second-P[i].second;
X1=X*COS-Y*SIN;
Y1=X*SIN+Y*COS;
X1+=P[i].first;
Y1+=P[i].second;
X1*=1000;
Y1*=1000;
A=X1;
B=Y1;
if (H[{A, B}]==true)
ANS++;
}
}
fout << ANS / 2 << '\n';
fin.close();
fout.close();
return 0;
}