Cod sursa(job #1026103)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 11 noiembrie 2013 09:01:04
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("trapez.in");
ofstream out ("trapez.out");
int N;
float pante[500500];
struct punct
{
    int x, y;
};
punct v[1005];
float panta (punct a, punct b, int &ok)
{
    if (a.x==b.x)
    {
        ok=0;
        return 0;
    }
    if (a.y==b.y) return 0;
    return (a.y-b.y)/1.00/(a.x-b.x);

}
int main()
{
    in>>N;
    for (int i=0;i<N;++i)
    {
        in>>v[i].x>>v[i].y;
    }
    int nr=0, p_inf=0;
    for (int i=0;i<N;++i)
        for (int j=i+1;j<N;++j)
        {
            int ok=1;
            float  x=panta(v[i],v[j],ok);
            if (ok)
            {
                pante[nr]=x;
                ++nr;
            }
            else
            {
                ++p_inf;
            }
        }
    int nr_trap=(p_inf*(p_inf-1))/2;
    //cout<<p_inf<<" ";
    sort (pante, pante+nr);
  // for (int i=0;i<nr;++i)
    //    cout<<pante[i]<<" ";
    int i=0;
    while (i<nr-1)
    {
        int num=1;
        while (pante[i]==pante[i+1])
        {
            ++num;
            ++i;
        }
       // cout<<num<<" ";
        if (num>1)
        {
            nr_trap=nr_trap+((num*(num-1))/2);
        }
        ++i;

    }
    out<<nr_trap;
    return 0;
}