Cod sursa(job #2453092)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 2 septembrie 2019 14:30:53
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define NMAX 1000
#define HORIZONTAL_SLOPE 2000000001
using namespace std;

struct COORD{
  int x, y;
}v[NMAX + 1];

vector<long double> slope;

int main() {
    ifstream fin("trapez.in");
    ofstream fout("trapez.out");
    int n, i, j;
    fin>>n;
    for( i = 1; i <= n; i ++ )
      fin>>v[i].x>>v[i].y;
    for( i = 1; i < n; i ++ )
      for( j = i + 1; j <= n; j ++ ) {
        long double m;
        if( v[i].x == v[j].x )
          m = HORIZONTAL_SLOPE;
        else
          m = (long double)((long double)(v[j].y - v[i].y) / (long double)(v[j].x - v[i].x));
        slope.push_back(m);
      }
    sort(slope.begin(),slope.end());
    long long ans = 0;
    int same = 1;
    for( i = 0; i < slope.size(); i ++ ) {
      if( slope[i] == slope[i + 1] )
        same ++;
      else {
        if( same > 1 )
          ans += same * (same - 1) / 2;
        same = 1;
      }
    }
    fout<<ans;
    return 0;
}