Cod sursa(job #1740188)

Utilizator cella.florescuCella Florescu cella.florescu Data 11 august 2016 09:43:01
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <algorithm>
#define MAXN 1000
#define INF 2000000005

using namespace std;

struct punct{
  int x, y;
} v[MAXN];

double pan[(MAXN-1)*MAXN/2];

int main()
{
    FILE *fin, *fout;
    int n, i, j, nr, ans, m;
    fin=fopen("trapez.in", "r");
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++)
      fscanf(fin, "%d%d", &v[i].x, &v[i].y);
    fclose(fin);
    m=0;
    for(i=0; i<n-1; i++)
      for(j=i+1; j<n; j++)
        if(v[i].x==v[j].x)
          pan[m++]=INF;
        else
          pan[m++]=(1.0*v[i].y-v[j].y)/(v[i].x-v[j].x);
    sort(pan, pan+m);
    nr=1; ans=0;
    for(i=1; i<m; i++)
      if(pan[i]==pan[i-1])
        ++nr;
      else{
        ans+=nr*(nr-1)/2;
        nr=1;
      }
    ans+=nr*(nr-1)/2;
    fout=fopen("trapez.out", "w");
    fprintf(fout, "%d\n", ans);
    fclose(fout);
    return 0;
}