Cod sursa(job #419586)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 17 martie 2010 18:30:07
Problema Medie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>

using namespace std;

struct vul
{
    int daca;
    int cat;
} 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]].daca=1;
        numar[v[i+nnou]].cat++;
        if(numar[v[i+nnou]].cat>=2)
            nnou--;
    }
    if(!nnou)nnou--;
    for(int i=1;i<n+nnou+1;i++)
        for(int j=i+1;j<=n+nnou+1;j++)
        {
            x=v[i]+v[j];
            if(!(x&1))
            {
                x=x>>1;
                if(x==v[i])
                {    if(numar[x].cat>2)
                        maxi+=(numar[x].cat*(numar[x].cat-1)*(numar[x].cat-2))>>1;}
                else if(numar[x].daca)
                        maxi+=numar[x].cat;
            }
        }
    cout<<maxi;

    return 0;
}