Cod sursa(job #850084)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 7 ianuarie 2013 23:23:13
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <tr1/unordered_map>

using namespace std;

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

const int MOD = 666013;

int V[1030];
tr1 :: unordered_map < int, vector < pair <int, int> > > M;
vector <int> :: iterator it;
vector <int> Hash[MOD];

int main ()
{
	int N, S, i, j, now, x, Ans = 0;

	in >> N >> S;

	for (i = 1; i <= N; i ++)
		in >> V[i];

    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 (it = Hash[x].begin (); it != Hash[x].end (); ++ it)
                    if (now == (*it))
                        Ans ++;
        }

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

    out << Ans;

    return 0;
}