Cod sursa(job #1147108)

Utilizator zaharia_horiaZaharia Horia zaharia_horia Data 19 martie 2014 16:39:23
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("oite.in");
ofstream fout("oite.out");
#define MOD 666013
#define Nmax 1030


vector <int> HASH[MOD];
int v[Nmax],n, L, sol;

int key(int x) {
	x=x%MOD;
	return x;
}
typedef vector <int> :: iterator IT;
int search(int x) {
	int ap=0, k=key(x);
	for (IT i=HASH[k].begin();i!=HASH[k].end();++i)
		if (*i==x)
			++ap;
	return ap;
}

int main() {
	fin>>n>>L;
	for (int i = 0; i < n; ++i)
		fin >> v[i];

	for (int i = 0; i < n - 1; ++i) {
		for (int j = i + 1; j < n; ++j)
			if (L - v[j] - v[i] >= 0)
				sol += search (L - v[j] - v[i]);
		for (int j = 0; j < i; ++j)
			HASH[key(v[j] + v[i])].push_back (v[j] + v[i]);
	};
	fout << sol;
	return 0;
}