Cod sursa(job #2841891)

Utilizator teodortatomirTeodor Tatomir teodortatomir Data 30 ianuarie 2022 16:59:00
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <algorithm>
#define NMAX 1000
#define INF 2000000001
#define EPS 0.001

using namespace std;

double p[NMAX * NMAX + 1];
int vx[NMAX + 1], vy[NMAX + 1];
int main(){
  FILE *fin,*fout;
  int n, i, m, j, cnt, af;

  fin = fopen("trapez.in", "r");
  fout = fopen("trapez.out", "w");
  fscanf(fin, "%d", &n);

  for(i = 1; i <= n; i++)
    fscanf(fin, "%d%d", &vx[i], &vy[i]);
  m = 1;
  for(i = 1; i <= n; i++) {
    for(j = i + 1; j <= n; j++) {
      if(vy[j] - vy[i] != 0)
        p[m] = (double)(vx[j] - vx[i]) / (vy[j] - vy[i]);
      else
        p[m] = INF;
      m++;
    }
  }
  sort(p + 1, p + m);

  m--;
  i = 1;
  af = 0;
  while(i < m) {
    if(i < m && p[i + 1] - p[i] < EPS) {
      cnt = 1;
      while(i < m && p[i + 1] - p[i] < EPS) {
        cnt++;
        i++;
      }
      af = af + (cnt - 1) * (cnt / 2);
    }
    else
      i++;
  }
  fclose(fin);

  fprintf(fout, "%d\n", af);
  fclose(fout);
  return 0;
}