Cod sursa(job #1553544)

Utilizator pulseOvidiu Giorgi pulse Data 20 decembrie 2015 00:12:38
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int MOD = 6007;
const int DIM = 1030;
int N, S;
int a[DIM];
int ans;
vector<int> H[MOD];

int main()
{
    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)
        {
            int x = S - a[i] - a[j];
            if (x < 0) continue;
            int line = x % MOD;
            for (auto it = H[line].begin(); it != H[line].end(); ++it)
                if (*it == x) ans++;
        }
        for (int j = 1; j < i; ++j)
        {
            int s = a[i] + a[j];
            H[s % MOD].push_back(s);
        }
    }

    fout << ans;
}