Cod sursa(job #1033602)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 17 noiembrie 2013 12:23:29
Problema Trapez Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

const long double eps = 1e-9;

struct point{
  long double x, y;

  point(){};
};

point gv[1005];
vector<long double> t;

long double ffabs(long double x){
  if(x < 0)
    return -x;
  return x;
}

int main(){
  ifstream in("trapez.in");
  ofstream out("trapez.out");

  int n;
  in >> n;
  for(int i = 1; i <= n; ++i)
    in >> gv[i].x >> gv[i].y;

  long long evil = 0, ans = 0;
  for(int i = 1; i <= n; ++i)
    for(int j = i + 1; j <= n; ++j)
      if(gv[i].y == gv[j].y)
        ++evil;
      else
        t.push_back((gv[i].x - gv[j].x) / (gv[i].y - gv[j].y));

  sort(t.begin(), t.end());

  ans = evil * (evil - 1) / 2;
  evil = 1;
  for(int i = 1; i < t.size(); ++i)
    if(ffabs(t[i] - t[i - 1]) < eps)
      ++evil;
    else{
      ans += evil * (evil - 1) / 2;
      evil = 1;
    }
  ans += evil * (evil - 1) / 2;

  out << ans;

  return 0;
}