Cod sursa(job #1720748)

Utilizator SburlyAndrei Florin Sburly Data 23 iunie 2016 13:46:14
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
/********************
    Created by Sburly
********************/
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>
#include <iterator>

using namespace std;

#define err 0.00001

unsigned int n;

vector<pair<unsigned long int, unsigned long int> > v(1000);
vector<double> p(1000000);
map<double, unsigned int> m;

inline bool aprox(double a, double b)
{
    if(-err < a-b && a-b < err)
        return true;
    return false;
}

int main()
{
    ifstream f("trapez.in");
    ofstream g("trapez.out");

    f >> n;

    for(unsigned int i = 0; i < n; i++)
    {
        f >> v[i].first;
        f >> v[i].second;
    }

    unsigned int k = 0;
    unsigned int l = 0;
    for(unsigned int i = 0; i < n-1; i++)
    {
        for(unsigned int j = i+1; j < n; j++)
        {
            if(v[j].first == v[i].first)
            {
                l++;
            }
            else
            {
                m[(double)(v[j].second - v[i].second)/(v[j].first - v[i].first)]++;
            }
        }
    }

    unsigned int sol = l*(l-1)/2;
    l = 1;
    for(map<double,unsigned int>::iterator it=m.begin(); it!=m.end(); ++it)
    {
        sol+= it->second*(it->second-1)/2;
    }
    g << sol;

    return 0;
}