Cod sursa(job #2237523)

Utilizator lucametehauDart Monkey lucametehau Data 2 septembrie 2018 08:34:41
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin ("trapez.in");
ofstream cout ("trapez.out");

const int NMAX = 1e3;

typedef pair <int, int> pii;

int n, m;
int lg, cnt;
long long sol;

pii v[1 + NMAX], p[1 + NMAX * NMAX];

bool comp(pii a, pii b) {
  return a.first * b.second <= a.second * b.first;
}

int main() {
  cin >> n;
  for(int i = 1; i <= n; i++)
    cin >> v[i].first >> v[i].second;
  for(int i = 1; i < n; i++) {
    for(int j = i + 1; j <= n; j++) {
      if(v[i].second == v[j].second)
        cnt++;
      else
        p[++m] = {v[i].first - v[j].first, v[i].second - v[j].second};
    }
  }
  sort(p + 1, p + m + 1, comp);
  lg = 1;
  for(int i = 1; i < m; i++) {
    if(p[i].first * p[i + 1].second == p[i].second * p[i + 1].first)
      lg++;
    else {
      sol += lg * (lg - 1) / 2;
      lg = 1;
    }
  }
  sol += cnt * (cnt - 1) / 2;
  cout << sol;
  return 0;
}