Cod sursa(job #1720691)

Utilizator SburlyAndrei Florin Sburly Data 23 iunie 2016 09:49:06
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
/********************
    Created by Sburly
********************/
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

#define err 0.00000000001

unsigned int n;

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

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;
    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)
            {
                p[k] = 2147483647;
            }
            else
            {
                p[k] = (double)(v[j].second - v[i].second)/(v[j].first - v[i].first);
            }
            k++;
        }
    }

    sort(p.begin(), p.begin()+k);

    unsigned int sol = 0;
    for(unsigned int i = 0; i < k-1; i++)
    {
        if(aprox(p[i],p[i+1]))
            sol++;
    }
    g << sol;

    return 0;
}