Cod sursa(job #1157360)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 28 martie 2014 14:13:16
Problema Oite Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

#include <map>

map<int,int> H1,H2;

ofstream g("oite.out");
ifstream f("oite.in");

#define LE 2066
#define ll long long
#define cout g

int n,L,i,j,A[LE];
ll result;

int main()
{
    f>>n>>L;

    for(i=1; i<=n; ++i)
    {
        f>>A[i];
        ++H1[A[i]];
        for(j=i-1; j>0; --j) ++H2[A[i]+A[j]];
    }

  //  cout<<H2[2]<<'\n';

    for(i=1; i<=n; ++i)
    {
        --H1[A[i]];

        for(j=1; j<=n; ++j)
            if (i!=j)
                --H2[A[i]+A[j]];

        for(j=i-1; j>0; --j)
        {
            int D=A[i]+A[j];
            --H1[A[j]];
            if (D>L) continue;
            D=L-D;
            if (H1.find(D-A[j])!=H1.end()) result-=(ll)H1[D-A[j]];
            if (H2.find(D)!=H2.end()) result+=(ll)H2[D];
            ++H1[A[j]];
        }

       for(j=1;j<=n;++j)
         if (i!=j)
           ++H2[A[i]+A[j]];

        ++H1[A[i]];
    }

    cout<<result/(ll)6<<'\n';

    return 0;
}