Cod sursa(job #2755767)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 28 mai 2021 09:33:25
Problema Oite Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <unordered_map>
#include <vector>

using namespace std;

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

const int mod = 50003;

vector < pair < long long, int > > H[mod];

void Insert ( long long x )
{
    int i = x % mod;
    for ( int j = 0 ; j < H[i].size () ; ++j )
        if ( H[i][j].first == x )
        {
            H[i][j].second++;
            return;
        }
    H[i].push_back ( { x, 1 } );
}

int Find ( long long x )
{
    int i = x % mod;
    for ( int j = 0 ; j < H[i].size () ; ++j )
        if ( H[i][j].first == x )
            return H[i][j].second;
    return 0;
}

int c, l;

int v[1137];

//unordered_map < long long, int > m;

int sorin;

int main()
{
    in >> c >> l;
    for ( int i = 1 ; i <= c ; ++i )
        in >> v[i];
    for ( int i = 2 ; i <= c ; ++i )
    {
        for ( int j = i + 1 ; j <= c ; ++j )
        {
            if ( v[i] + v[j] > l )
                continue;
            sorin += Find ( l - v[i] - v[j] );
        }
        for ( int j = 1 ; j <= i - 1 ; ++j )
            Insert ( v[i] + v[j] );
    }
    out << sorin;
    return 0;
}