Pagini recente » Cod sursa (job #2052539) | Cod sursa (job #1969978) | Cod sursa (job #1837408) | Cod sursa (job #606668) | Cod sursa (job #960919)
Cod sursa(job #960919)
#include <fstream>
#include <vector>
using namespace std;
#define in "oite.in"
#define out "oite.out"
#define MOD 19997
#define N 1030
#define h(x) (x%MOD)
typedef vector<int> :: iterator IT;
vector <int> HASH[MOD];
int v[N],n, L, sol;
int search(int x) {
int ans = 0, k = h(x);
for (IT it = HASH[k].begin(); it != HASH[k].end(); ++it)
if (*it == x)
ans++;
return ans;
}
int main() {
ifstream fin (in);
fin >> n >> L;
for (int i = 0; i < n; ++i)
fin >> v[i];
fin.close();
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)
if (v[i] + v[j] <= L)
HASH[h (v[j] + v[i])].push_back (v[j] + v[i]);
}
ofstream fout (out);
fout << sol;
fout.close();
return 0;
}