Pagini recente » Cod sursa (job #2438346) | Cod sursa (job #2316510) | Cod sursa (job #1398392) | Cod sursa (job #2158050) | Cod sursa (job #240211)
Cod sursa(job #240211)
#include <cstdio>
#include <vector>
using namespace std;
#define MOD 666013
#define MAX_N 1030
struct oaie
{
unsigned int i:11;
unsigned int j:11;
}__attribute__((packed));
int N, V[MAX_N];
vector <oaie> H[MOD];
long Rez, L;
void hash(int i, int j)
{
long x = V[i] + V[j];
if(x > L) return;
int k = x % MOD;
oaie w;
w.i = i, w.j = j;
H[k].push_back(w);
}
int search(short i, short j)
{
long x = L - V[i] - V[j];
int k = x % MOD;
int Sol = 0;
for(vector<oaie>::iterator p = H[k].begin(); p != H[k].end(); ++p)
if(V[p->i] + V[p->j] == x)
if(p -> i > j && p -> j != j)
++Sol;
return Sol;
}
void citire()
{
scanf("%d %ld",&N, &L);
for(int i = 1; i <= N; ++i)
scanf("%d",V+i);
}
void solve()
{
for(int i = 1; i < N; ++i)
for(int j = i+1; j <= N; ++j)
hash(i, j);
for(int i = 1; i < N; ++i)
for(int j = i+1; j <= N; ++j)
Rez += search(i, j);
printf("%ld\n",Rez);
}
int main()
{
freopen("oite.in","rt",stdin);
freopen("oite.out","wt",stdout);
citire();
solve();
}