Cod sursa(job #720316)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 22 martie 2012 15:57:26
Problema Medie Scor 100
Compilator cpp Status done
Runda oni_2006_10_z1 Marime 1.12 kb
#include <cstdio>
#include <algorithm>

#define MAX 7010

using namespace std;

int apar[MAX];
int minim = 8000, maxim, sol, n;

void citire()
{
    freopen("medie.in", "r", stdin);
    scanf("%d", &n);
    int i,a;
    for(i = 1; i <= n; i++)
    {
        scanf("%d", &a);
        minim = min(a, minim);
        maxim = max(a, maxim);
        apar[a]++;
    }
    fclose(stdin);
}

int comb(int k)
{
    return (k * (k - 1) / 2);
}

void detNumar()
{
    int i, j;
    for(i = minim; i <= maxim; i++)
    {
        if(apar[i])
        {
            for(j = i + 2; j <= maxim; j += 2)
            {
                if(apar[j])
                {
                    if(apar[(i + j) / 2])
                        sol += (apar[i] * apar[j] * apar[(i + j) / 2]);
                }
            }
        }
        if(apar[i] >= 3)
        {
            sol += ((apar[i] - 2) * comb(apar[i]));
        }
    }
}

void afisare()
{
    freopen("medie.out", "w", stdout);
    printf("%d", sol);
    fclose(stdout);
}

int main()
{
    citire();
    detNumar();
    afisare();
    return 0;
}