Cod sursa(job #432980)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 3 aprilie 2010 01:23:13
Problema Medie Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#define s(x) (((x)*((x)-1)*((x)-2))>>1)
using namespace std;

int numar[7010];
int v[9050],maxi;

int main()
{
    freopen ("medie.in","r",stdin);
    freopen ("medie.out","w",stdout);

    int n,x;
    cin>>n;
    int nnou=0;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i+nnou];
        numar[v[i+nnou]]++;
        if(numar[v[i+nnou]]>1)
            nnou--;
    }

    for(int i=1;i<n+nnou;i++)
    {
        if(numar[v[i+nnou]]>2)
            maxi+=s(numar[v[i+nnou]]);
        for(int j=i+1;j<=n+nnou;j++)
        {
            x=v[i]+v[j];
            if(!(x&1))
            {
                x=x>>1;
                maxi+=numar[x]*numar[v[i]]*numar[v[j]];
            }
        }
    }
    if(numar[v[n+nnou]]>2)
        maxi+=s(numar[v[n+nnou]]);
    cout<<maxi;

    return 0;
}