Cod sursa(job #21627)

Utilizator gigi_becaliGigi Becali gigi_becali Data 23 februarie 2007 22:15:29
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <algorithm>
#include <hash_map.h>
#include <map>
using namespace std;

double x[1000001];

struct point { int x, y;};
point a[1001];
int n, t;
long long sum=0;
void citire()
{
  freopen("trapez.in", "r", stdin);
  scanf("%d\n", &n);
  for(int i=1;i<=n;i++) scanf("%d %d\n", &a[i].x, &a[i].y);

}

void calcul()
{
  int i, j;
  map<double, int> H;
  for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
     if(a[i].x-a[j].x!=0) H[(double)(a[i].y-a[j].y)/(double)(a[i].x-a[j].x)]++;
     else H[0x3f3f3f3f]++;
	 
	 for(map<double, int>::iterator it=H.begin(); it!=H.end();++it) sum+=(long long) (it->second)*((it->second)-1)/2;
	 /*
	 
   int nr=1;
  for(i=2;i<=t;i++)
    if(x[i]==x[i-1]) { nr++; }
    else { sum+=(long long)(nr*(nr-1))/2; nr=1;}
*/
//sum+=(long long)(nr*(nr-1))/2;
}

int main()
{
  citire();
  calcul();
  
  freopen("trapez.out", "w", stdout);
  printf("%lld\n",sum);
  return 0;
}