Cod sursa(job #2843799)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 2 februarie 2022 22:55:52
Problema Trapez Scor 10
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>
#include <stdlib.h>
#define ELMAX 1000000
#define NMAX 1000
#define NOVAL -1
#define ETA 0.0001

double a[ELMAX], b[ELMAX];
int v[NMAX][2];

void calcFormula (int id, int x1, int y1, int x2, int y2){
  if(x1 == x2){
    a[id] = NOVAL;
    b[id] = x1;

  } else{
    a[id] = (double)(y1 - y2) / (x1 - x2);
    b[id] = y1 - a[id] * x1;
  }
}

int main(){
  int n,i,j,id,nr;
  FILE *fin, *fout;

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

  for(i = 0; i < n; i++){
    fscanf(fin, "%d%d",&v[i][0],&v[i][1]);
  }
  fclose(fin);

  id = 0;
  for(i = 0; i < n-1; i ++){
    for(j = i+1; j < n; j ++){
      calcFormula(id, v[i][0], v[i][1], v[j][0], v[j][1]);
      //printf("%d %d , %d %d : %.1f %.1f\n",v[i][0],v[i][1],v[j][0],v[j][1],a[id],b[id]);

      id ++;
    }
  }

  nr = 0;
  for(i = 0; i < id-1; i ++){
    for(j = i + 1; j < id; j ++){
      if(a[i] - a[j] > -ETA && a[i] - a[j] < ETA && b[i] != b[j]) ///Dupa ce am stat juma de ora sa imi dau seama cum sa fac sa numar paralelogramele o singura data...
        nr++;
    }
  }

  fout = fopen("trapez.out","w");
  fprintf(fout, "%d\n",nr);
  fclose(fout);
  return 0;
}