Pagini recente » Cod sursa (job #1748679) | Cod sursa (job #1104906) | Cod sursa (job #2834518) | Cod sursa (job #2117320) | Cod sursa (job #1765067)
#include <cstdio>
#include <vector>
using namespace std;
const int mod = 666019;
struct suma
{
int x, a, b;
};
vector <suma> g[mod];
int v[1050];
void update (int x, int a, int b)
{
suma m; m.x = x;
m.a = a; m.b = b;
g[x % mod].push_back(m);
}
int query (int x, int a, int b)
{
int poz = x % mod, ans = 0;
for (int i = 0; i < g[poz].size(); ++i)
if (g[poz][i].x == x && g[poz][i].a != a && g[poz][i].b != b)
++ans;
return ans;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
int n, k;
long long ans = 0;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j)
update(v[i] + v[j], i, j);
for (int i = 1; i <= n; ++i)
for (int j = i + 1; j <= n; ++j)
ans = ans + (1LL) * query(k - v[i] - v[j], i, j);
printf("%lld\n", ans);
return 0;
}