Cod sursa(job #1217013)

Utilizator radudurlesteanuDurlesteanu Radu Stefan radudurlesteanu Data 6 august 2014 13:54:44
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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 (b.numar*a.numit<b.numit*a.numar) return true;
                                else return false;
}
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].y-a[i].y;
   b[m].numit=a[j].x-a[i].x;
   m++;
   }
sort(b,b+m,cmp);
u=p=0;
while (u<m)
   {
   l=0;
   while ((b[p].numar*b[u+1].numit==b[u+1].numar*b[p].numit) && (u<m-1)) u++;
   l=u-p+1;
   p=++u;nr+=l*(l-1)/2;
   }
printf("%d",nr);
}