Cod sursa(job #1958381)

Utilizator edi_laitinLaitin Eduard edi_laitin Data 8 aprilie 2017 12:40:34
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("trapez.in");
ofstream fout("trapez.out");

struct punct
{
    int x;
    int y;
};

punct M[1005];
double Panta[500505];
int k,Sol,N,a;

void Read()
{
    fin>>N;

    for(int i=1;i<=N;i++)
    {
        fin>>M[i].x>>M[i].y;
    }
}

void Solve()
{
    for(int i=1;i<=N;i++)
      for(int j=i+1;j<=N;j++)
        {
              k++;
              if(M[j].x==M[i].x)
                Panta[k]=2000000000;
              else
              Panta[k]=(double)(M[j].y-M[i].y)/(M[j].x-M[i].x);
        }

    sort(Panta+1,Panta+k+1);

    for(int i=1;i<=k && Panta[i]<2000000000;i++)
    {
        if(Panta[i]==Panta[i-1])
            a++;
        else
            {
               Sol+=a*(a-1)/2;
               a=1;
            }
    }
}

void Print()
{
    fout<<Sol;
}

int main()
{
    Read();
    Solve();
    Print();

    return 0;
}