Pagini recente » Cod sursa (job #1010872) | Cod sursa (job #2757894) | Cod sursa (job #1989059) | Cod sursa (job #2282929) | Cod sursa (job #976106)
Cod sursa(job #976106)
#include <cstdio>
#include <list>
const int MAX_N(1025);
const int HASH_KEY(10007);
int n, l, Result;
int v [MAX_N];
std::list<int> Hash [HASH_KEY];
inline int Key (const int X)
{
return X % HASH_KEY;
}
inline void Insert (const int X)
{
Hash[Key(X)].push_front(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;
}