Cod sursa(job #3130900)

Utilizator sLinXDinca Robert sLinX Data 18 mai 2023 19:32:12
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define ll long long int
using namespace std;

int n, l;
int v[1050];

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

struct elem{
    int sum,i,j;
};

struct hash_{
    vector<elem>vec;
}h[945500];
const int mod = 945327;
int tot = 0;
void add(int val,int i,int j)
{
    int x = val%mod;
    elem aux ;
    aux.sum = val;
    aux.i = i;
    aux.j = j;
    h[x].vec.push_back(aux);
}

void srch(ll sum, ll i, ll j)
{
    int x = sum%mod;
    for(auto el: h[x].vec)
    {
        if(sum == el.sum && j<el.i&&i != el.i && j != el.j && j != el.i && i != el.j)
            tot++;
    }
}

int main()
{
    fin >> n >> l;
    for(int i =1 ;i<=n ; i++)
    {
        fin >> v[i];
    }
    for(int i = 1; i<=n-1; i++)
        for(int j = i+1; j<= n ; j++)
    {
        add(v[i]+v[j],i,j);
    }
    for(int i = 1; i <= n-3 ;i++)
        for(int j= i+1 ;j<= n-2; j++)
    {
        if(l-v[i]-v[j] >= 0)
            srch(l-v[i]-v[j],i,j);
    }
    fout << tot ;
    return 0;
}