Pagini recente » Cod sursa (job #457197) | Cod sursa (job #2798703) | Cod sursa (job #2059180) | Cod sursa (job #2798866) | Cod sursa (job #990278)
Cod sursa(job #990278)
#include <cstdio>
#include <vector>
const int MAX_N(1025);
const int HASH_KEY(7001);
int n, l, Result;
int v [MAX_N];
std::vector<int> Hash [HASH_KEY];
inline int Key (const int X)
{
return X % HASH_KEY;
}
inline void Insert (const int X)
{
Hash[Key(X)].push_back(X);
}
inline int Find (const int X)
{
int result(0);
if (X >= 0)
for (auto iterator(Hash[Key(X)].begin()), end(Hash[Key(X)].end()) ; iterator != end ; ++iterator)
if (*iterator == X)
++result;
return result;
}
inline void Read (void)
{
std::freopen("oite.in","r",stdin);
std::scanf("%d\n",&n);
std::scanf("%d\n",&l);
for (int i(1) ; i <= n ; ++i)
std::scanf("%d\n",&v[i]);
std::fclose(stdin);
}
inline void Print (void)
{
std::freopen("oite.out","w",stdout);
std::printf("%d\n",Result);
std::fclose(stdout);
}
inline void Compute (void)
{
int i, j;
for (i = 1 ; i <= n ; ++i)
{
for (j = i + 1 ; j <= n ; ++j)
Result += Find(l - (v[i] + v[j]));
for (j = 1 ; j < i ; ++j)
Insert(v[i] + v[j]);
}
}
int main (void)
{
Read();
Compute();
Print();
return 0;
}