Cod sursa(job #912487)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 12 martie 2013 14:27:26
Problema Triang Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <algorithm>
#include <cmath>
#define x first
#define y second
 
using namespace std;
 
typedef pair <double, double> pr;
 
int N;
double sq = sqrt (3.0) / 2;
pr v[1511];
 
bool cmp (pr a, pr b)
{
    if (fabs (a.x - b.x) < 1e-5)
    {
        if (fabs (a.y - b.y) < 1e-5) return 0;
        return a.y < b.y;
    }
    return a.x < b.x;
}
 
inline int good (pr punct)
{
    if (binary_search (v, v + N, punct, cmp)) return 1;
    return 0;
}
 
int main ()
{
    ifstream fin ("triang.in");
    fin >> N;
    for (int i = 0; i < N; i++)
        fin >> v[i].x >> v[i].y;
    fin.close ();
    sort (v, v + N, cmp);
    ofstream fout ("triang.out");
    int cnt = 0;
    for (int i = 0; i < N; i++)
        for (int j = i + 1; j < N; j++)
        {
            pr rasp;
            rasp.x = 0.5 * (v[i].x + v[j].x) - sq * (v[j].y - v[i].y);
            rasp.y = 0.5 * (v[i].y + v[j].y) + sq * (v[j].x - v[i].x);
            cnt += good (rasp);
            rasp.x = 0.5 * (v[i].x + v[j].x) + sq * (v[j].y - v[i].y);
            rasp.y = 0.5 * (v[i].y + v[j].y) - sq * (v[j].x - v[i].x);
            cnt += good (rasp);
        }
    fout << cnt / 3;
    fout.close ();
    return 0;
}