Cod sursa(job #129536)

Utilizator savimSerban Andrei Stan savim Data 29 ianuarie 2008 18:03:15
Problema Medie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
int p,i,j,x,n,nrtot;
int a[9001],b[7001],nr[7001],nr2[7001];
int comb(int x,int y)
{
     //calculez combinari de nr[p] luate cate 2
     return (x*(x-1))/2;     
}
int main()
{

    
    freopen("medie.in","r",stdin);
    freopen("medie.out","w",stdout);
    
    scanf("%d",&n);
    for (i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
        nr2[a[i]]++;
    }
    for (i=1; i<=n-1; i++)
        for (j=i+1; j<=n; j++)
        if (a[i]>a[j])
        {
           x=a[i];
           a[i]=a[j];
           a[j]=x;              
        }
    
    nrtot=0;
    for (i=1; i<=n-2; i++)
    {
        b[a[i]]=1;nr[a[i]]++;
        for (j=i+2; j<=n; j++)
        {
            p=2*a[i+1]-a[j];
            if (b[p]==1) 
            {
                if (p!=a[j]) nrtot+=nr[p]*nr2[a[j]];
                else nrtot+=comb(nr2[p]-1,2)-1;
            }
        }    
    }
    
    printf("%d\n",nrtot);
    
    
    return 0;    
}