Pagini recente » Cod sursa (job #795391) | Cod sursa (job #2856236) | Cod sursa (job #2275601) | Cod sursa (job #1629821) | Cod sursa (job #2837722)
#include <algorithm>
#include <iostream>
#include <vector>
#define MAXN 10007
#define val first
#define cnt second
using namespace std;
int C, L, v[1030];
long long Sol;
vector<pair<int, int>> H[MAXN];
void Insert(int V) {
int S = V % MAXN;
for (int i = 0; i < H[S].size(); i++)
if (H[S][i].val == V) {
H[S][i].cnt++;
return;
}
H[S].push_back(make_pair(V, 1));
}
int Search(int V) {
int S = V % MAXN;
for (int i = 0; i < H[S].size(); i++)
if (H[S][i].val == V)
return H[S][i].cnt;
return 0;
}
int main() {
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
scanf("%d%d", &C, &L);
for (int i = 1; i <= C; i++)
scanf("%d", &v[i]);
for (int i = 1; i < C; i++) {
for (int j = i + 1; j <= C; ++j)
if (L - v[i] - v[j] >= 0)
Sol += Search(L - v[i] - v[j]);
for (int j = 1; j < i; ++j)
Insert(v[i] + v[j]);
}
printf("%lld", Sol);
return 0;
}