Cod sursa(job #1033598)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 17 noiembrie 2013 12:21:15
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>

using namespace std;

const double eps = 1e-7;

struct point{
  double x, y;

  point(){};
};

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

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(fabs(t[i] - t[i - 1]) < eps)
      ++evil;
    else{
      ans += evil * (evil - 1) / 2;
      evil = 1;
    }
  ans += evil * (evil - 1) / 2;

  out << ans;

  return 0;
}