Cod sursa(job #1775209)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 10 octombrie 2016 01:17:05
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
//
//  main.cpp
//  Triang
//
//  Created by Albastroiu Radu on 10/10/16.
//  Copyright © 2016 Albastroiu Radu. All rights reserved.
//

#include <iostream>
#include <fstream>
#include <algorithm>
#include <unordered_map>
#include <vector>
#include <cmath>

using namespace std;

ifstream fin( "triang.in");
ofstream fout("triang.out");

long long i, j, n, nr, suma;
double h, m, x, y, dif;

struct punct
{
    double x,y;
}element;

vector<punct> puncte;
vector<double> distanta;

int main()
{
    
    fin >> n;
    for(i=1;i<=n;i++)
    {
        fin >> x >> y;
        
        element.x = x;
        element.y = y;
        puncte.push_back(element);
    }
    
    for(i = 0; i < puncte.size(); i++)
    {
        for(j = i+1; j < puncte.size(); j++)
        {
            m = (puncte[j].x - puncte[i].x)*(puncte[j].x - puncte[i].x) + (puncte[j].y - puncte[i].y)*(puncte[j].y - puncte[i].y);
            m = sqrt(m);
            distanta.push_back(m);
        }
    }
    
    sort(distanta.begin(), distanta.end());
    
    dif = 0.001; // 10^(-3)
    
    nr = 1;
    for(i = 1; i < distanta.size(); i++)
    {
        if(abs(distanta[i] - distanta[i-1]) <= dif)
        {
            nr++;
        }
        else
        {
            suma += (nr * (nr-1) * (nr-2))/6;
            nr = 1;
        }
    }
    suma += (nr * (nr-1) * (nr-2))/6;
    
    fout << suma;
    
    return 0;
}