Pagini recente » Cod sursa (job #2154559) | Cod sursa (job #1254755) | Cod sursa (job #3218478) | Cod sursa (job #1151521) | Cod sursa (job #1767659)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const int mod = 10007;
struct suma
{
int x, a;
};
vector <int> g[mod];
int v[1050];
inline void update (int x)
{
g[x % mod].insert(g[x % mod].end(), x);
}
inline int query (int x)
{
int poz = x % mod, ans = 0;
for (int i = 0; i < g[poz].size(); ++i)
if (g[poz][i] == x )
++ans;
return ans;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
int n, k, x, poz, ans;
long long anss = 0;
suma m;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
sort (v + 1, v + n + 1);
for (int i = 1; i < n; ++i)
{
for (int j = i + 1; j <= n; ++j)
if (v[i] + v[j] <= k)
anss += (1LL) * query(k - v[i] - v[j]);
for (int j = 1; j < i; ++j)
update(v[i] + v[j]);
}
printf("%lld\n", anss);
return 0;
}