Cod sursa(job #1217023)

Utilizator radudurlesteanuDurlesteanu Radu Stefan radudurlesteanu Data 6 august 2014 14:39:25
Problema Trapez Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct punct {
             int x,y;
             }a[1000];
struct panta {
             int numar,numit;
             }b[500500];
int i,j,n,nr,p,u,m,l;
bool cmp(const panta a,const panta b)
{
if (a.numar*b.numit==b.numar*a.numit) return 0;
bool r=(a.numar*b.numit<b.numar*a.numit);
if (b.numit<0) r=!r;
if (a.numit<0) r=!r;
return r;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for (i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
   {
   b[m].numar=a[j].x-a[i].x;
   b[m].numit=a[j].y-a[i].y;
   m++;
   }
sort(b,b+m,cmp);
for (i=1;i<m;i++)
if (b[i-1].numar*b[i].numit==b[i].numar*b[i-1].numit) l++;
                                                 else {
                                                      nr+=(l-1)*l/2;
                                                      l=1;
                                                      }
nr+=(l-1)*l/2;
printf("%d",nr);
}