Cod sursa(job #1720148)

Utilizator SburlyAndrei Florin Sburly Data 21 iunie 2016 17:10:25
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
/********************
    Created by Sburly
********************/
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

unsigned int n;

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

bool mf(pair<long int,long int> i, pair<long int,long int> j)
{
    return (i.second * j.first < j.second * i.first);
}

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

    sort(p.begin(), p.begin()+k-1,mf);

    unsigned int sol = 0;
    for(unsigned int i = 0; i < k-1; i++)
    {
        if(p[i].second * p[i+1].first == p[i+1].second * p[i].first)
            sol++;
    }
    g << sol;

    return 0;
}