Cod sursa(job #284755)

Utilizator Andrei200Andrei200 Andrei200 Data 21 martie 2009 22:41:34
Problema Trapez Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>
#include <math.h>

long x[1001],y[1001],a[1001],b[1001],n,nrt,nr;

inline long abs(long a) { return a>=0?a:-a; }

void qsort(long l, long r)   
{   
 long i,j,xx,yy;   
 i=l;   
 j=r;   
 xx=y[(l+r)>>1];   
 do  
    {   
    while ((y[i]<xx)&&(i<nr)) ++i;   
    while ((xx<y[j])&&(j>1)) --j;   
    if (i<=j)   
        {   
        yy=y[i];   
        y[i]=y[j];   
        y[j]=yy;  
        yy=x[i];
        x[i]=x[j];
        x[j]=yy; 
        ++i;   
        --j;   
        }   
    }   
 while (i<=j);   
 if (l<j) qsort(l,j);   
 if (i<r) qsort(i,r);   
}   


int main()
{
    long i,j;
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    
    scanf("%ld", &n);
    for (i=1;i<=n;++i)
          scanf("%ld %ld", &a[i],&b[i]);
          
    nr=0;      
    for (i=1;i<n;++i)
         for (j=i+1;j<=n;++j)
              {
                   nr++;
                   y[nr]=abs(b[i]-b[j]);
                   x[nr]=abs(a[i]-a[j]);
              }
         
    //qsort(1,nr);          
    
    nrt=0;
    for (i=1;i<nr;++i)
          for (j=i+1;j<=nr;++j)    
                 if (x[i]==x[j] && y[i]==y[j]) 
                       nrt++;
    //for (i=1;i<=nr;++i)
      //    printf("%d %d\n", y[i],x[i]);
    printf("%ld", nrt);
    return 0;
}