Cod sursa(job #2229712)

Utilizator tanasaradutanasaradu tanasaradu Data 7 august 2018 23:16:15
Problema Oite Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

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

const int P = 123457;

const short NMAX = 1025;

int n , S , a[NMAX];

struct T
{
    int val , ind1 , ind2;
};

vector < T > L[P];

int main()
{
    int p , sol = 0;
    T w;
    fin >> n >> S;
    for(int i = 1 ; i <= n ; i++)
        fin >> a[i];
    for(int i = 1 ; i < n ; i++)
        for(int j = i + 1 ; j <= n ; j++)
            if(a[i] + a[j] <= S)
    {
        w . val = a[i] + a[j];
        w . ind1 = i;
        w . ind2 = j;
        p = w . val % P;
        L[p] . push_back(w);
    }
    for(int i = 1 ; i < n ; i++)
        for(int j = i + 1 ; j <= n ; j++)
            if(a[i] + a[j] <= S)
    {
        p = (S - a[i] - a[j]) % P;
        for(auto it : L[p])
            if(it . val + a[i] + a[j] == S && i != it . ind1 && i != it . ind2 && j != it . ind1 && j != it . ind2)
                ++sol;
    }
    fout << sol / 6 << '\n';
    fin.close();
    fout.close();
    return 0;
}