Cod sursa(job #1958373)

Utilizator edi_laitinLaitin Eduard edi_laitin Data 8 aprilie 2017 12:34:19
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 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];
int Panta[500505],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++;
              Panta[k]=(M[j].x-M[i].x)*(M[j].y-M[i].y);
              if(Panta[k]==0 && M[j].y==M[i].y)
                  Panta[k]=2000000000;
        }

    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;
}