Cod sursa(job #2250897)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 30 septembrie 2018 20:00:34
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#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;
}