Pagini recente » Cod sursa (job #1009978) | Cod sursa (job #2587027) | Cod sursa (job #2176453) | Cod sursa (job #1068258) | Cod sursa (job #964657)
Cod sursa(job #964657)
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define Nmax 1200
#define Mod 100021
#define PI pair<int, int>
vector<PI> Hash[Mod];
int N, L, V[Nmax];
long long Ans;
void Insert(int Val)
{
int K = Val % Mod;
for(vector<PI> :: iterator it = Hash[K].begin(); it != Hash[K].end(); ++ it)
if(it -> first == Val)
{
it -> second ++;
return ;
}
Hash[K].push_back(make_pair(Val, 1));
}
int Ask(int Val)
{
int K = abs(Val) % Mod;
for(vector<PI> :: iterator it = Hash[K].begin(); it != Hash[K].end(); ++ it)
if(it -> first == Val)
return it -> second;
return 0;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
scanf("%i %i", &N, &L);
for(int i = 1; i <= N; ++ i) scanf("%i", &V[i]);
for(int i = 1; i <= N; ++ i)
{
for(int j = i + 1; j <= N; ++ j)
Ans += 1LL * Ask(L - V[i] - V[j]);
for(int j = 1; j < i; ++ j)
Insert(V[i] + V[j]);
}
printf("%lld\n", Ans);
return 0;
}