Cod sursa(job #1038072)

Utilizator addy01adrian dumitrache addy01 Data 20 noiembrie 2013 23:05:17
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <fstream>
#include <tr1/unordered_map>

using namespace std;


tr1 :: unordered_map < int , int > M;

int lana[1025];
int N,L;

int main()
{
    ifstream in("oite.in");
    ofstream out("oite.out");
    in>>N>>L;
    int i,j,k,ans=0;
    for(i=1;i<=N;i++)
        {
            in>>lana[i];

        }

  for(i=1;i<=N;i++)
    {
        for(j=i+1;j<=N;j++)
            if(M.count(L-lana[i]-lana[j]))
                ans+=M[L-lana[i]-lana[j]];


         for(k=1;k<i;k++)
            M[lana[i]+lana[k]]++;
    }
    out<<ans;
    return 0;
}

/*
#include <iostream>
#include <fstream>
using namespace std;
int lana[1025];
int N,L;

int main()
{
    ifstream in("oite.in");
    ofstream out("oite.out");
    in>>N>>L;
    int i,j,ans=0;
    for(i=1;i<=N;i++)
        in>>lana[i];

    for(i=1;i<N-2;i++)
        for(j=i+1;j<N-1;j++)
            for(int ii=j+1;ii<N;ii++)
                for(int jj=ii+1;jj<=N;jj++)
                    if(lana[i]+lana[j]+lana[ii]+lana[jj]==L)
                        ans++;
    cout<<ans;
    return 0;
}
*/


/*
 for (i = 1; i <= N; i ++)
 {
    for (j = i + 1; j <= N; j ++)
    {
        now = S - V[i] - V[j];

        if (now < 0)
            continue;

        x = now % MOD;
        if (Hash[x].size ())
            for (k = 0; k < Hash[x].size (); ++ k)
                if (now == Hash[x][k])
                    Ans ++;
    }

    for (j = 1; j < i; j ++)
        Hash[ (V[i] + V[j]) % MOD ].push_back (V[i] + V[j]);
}*/