Pagini recente » Cod sursa (job #1182108) | Cod sursa (job #1009805) | Cod sursa (job #432939) | Cod sursa (job #1321248) | Cod sursa (job #1478985)
#include<cstdio>
#include<vector>
#define DIM 100000
#define MOD 32767
using namespace std;
int N, S, Sum, i, j, nr;
int v[DIM];
vector<int>Hash[DIM];
void Searching(int, int);
void Hashing();
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%d", &N, &S);
for (i = 1; i <= N; i++)
scanf("%d", &v[i]);
Hashing();
}
void Searching(int val, int line)
{
vector <int> :: iterator it;
for (it = Hash[line].begin(); it != Hash[line].end(); it++)
if (*it == val) nr++;
return;
}
void Hashing()
{
for (i = 1; i < N; i++)
{
for (j = i + 1; j <= N; j++)
{
Sum = S - v[i] - v[j];
if (Sum < 0) continue;
Searching(Sum, Sum % MOD);
}
for (j = 1; j < i; j++)
{
Sum = v[i] + v[j];
Hash[Sum % MOD].push_back(Sum);
}
}
printf("%d", nr);
return;
}