Cod sursa(job #1764265)

Utilizator KronSabau Valeriu Kron Data 25 septembrie 2016 12:51:31
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct dreapta
{
    long long x,y;
}a[1001],panta[1000010];
int h;

int Cmp(dreapta a,dreapta b)
{
   return a.x*b.y<b.x*a.y;
}

int main()
{
    f >> n;

    for(int i=0;i<n;i++)
    {

        f>>a[i].x >> a[i].y;
    }

    for(int i=0;i<n;i++)
        for(int j=i+1;j<n;j++)
            if(i!=j)
            {
                panta[h].x=a[i].x-a[j].x;
                panta[h].y=a[i].y-a[j].y;

                if( panta[h].y<0)
                {
                    panta[h].y=panta[h].y*-1;
                    panta[h].x=panta[h].x*-1;
                }

                h++;
            }

    sort(panta,panta+h,Cmp);
    int solutie=0;
    int nr=1;
    for(int i=0;i<h-1;i++)
    {

        if(panta[i].x*panta[i+1].y==panta[i+1].x*panta[i].y)
        {

                nr++;
        }else
        {
                solutie+=nr*(nr-1)/2;
                nr=1;
        }
    }
    solutie+=nr*(nr-1)/2;
    g  <<  solutie;
    return 0;
}