Cod sursa(job #591007)

Utilizator biroBiro Alexandru biro Data 21 mai 2011 17:46:12
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <algorithm>
#define DIM 2000005

using namespace std;

long long a[1001];
long long b[1001];
double p[DIM];
int n,m;
long long nr=0;

int main () {
  freopen ("trapez.in","r",stdin);
  freopen ("trapez.out","w",stdout);

  scanf ("%d" , &n);
  
  for (int i=1; i<=n; ++i) {
    scanf ("%lld%lld" , &a[i] , &b[i] );
  }
  
  for (int i=1; i<n; ++i) {
    for (int j=i+1; j<=n; ++j) {
      if (a[i]==a[j]) {
        p[++m]=DIM*1000;
      }
      else {
        p[++m]=(double)( b[i] - b[j] ) / ( a[i] - a[j] ) ;
      }
    }
  }
  
  sort (p+1,p+m+1);
  int tmp=0;
  for (int i=1; i<m; ++i) {
    tmp=1;
    while (p[i]==p[i+1] && i<m) {
      ++i;
      ++tmp;
    }
    if (tmp%2)
      nr+=((tmp-1)/2)*tmp;
    else
      nr+=(tmp/2)*(tmp-1);
  }
  printf ("%lld", nr);
  
  return 0;
}