Cod sursa(job #1920497)

Utilizator SirbuSirbu Ioan Sirbu Data 10 martie 2017 01:46:29
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
#define NMAX 1002
#define eps 1.0 / 1e9
using namespace std;

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

struct punct {
  int x;
  int y;
}v[NMAX];

double pante[NMAX*NMAX];

int main (){

  int n;
  long long rez = 0;
  fin >> n;
  for (int i = 1; i <= n; ++i)
    fin >> v[i].x >> v[i].y;

  int p = 0;

  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j) {

      double numarator = 1.0 * (v[j].y - v[i].y);
      double numitor = 1.0 * (v[j].x - v[i].x);

      if (numitor!=0)
        pante[++p] = numarator/numitor;
    }

  sort (pante+1,pante+p+1);
  int secv = 0;
  for (int i = 1; i <= p; ++i)
    if (fabs(pante[i]-pante[i-1]) <= eps)
      secv ++;
    else {
      rez = rez + (secv * (secv-1)) /2;
      secv = 1;
    }

    rez = rez + (secv*(secv-1)) /2;

    fout << rez;

}