Pagini recente » Cod sursa (job #1909208) | Cod sursa (job #189020) | Cod sursa (job #1279815) | Cod sursa (job #1370829) | Cod sursa (job #1838682)
#include <iostream>
#include <cstdio>
#include <unordered_map>
#define MAXN 1050
using namespace std;
int c, L;
int a[MAXN];
long long sol;
unordered_map<int, int> m1, m2;
void read()
{
scanf("%d %d", &c, &L);
for (int i = 1; i <= c; i++) {
scanf("%d", &a[i]);
m2[a[i]]++;
}
}
void solve()
{
for (int i = 1; i <= c; i++)
{
for (int j = 1; j < i; j++)
m1[a[i]+a[j]]++;
for (int j = i+1; j <= c; j++)
m1[a[i]+a[j]]++;
}
for (int i = 1; i <= c; i++)
{
for (int j = 1; j <= c; j++) {
if (i == j) continue;
int sum = a[i]+a[j];
int x = m1[sum];
int y = m1[L-sum];
sol += m1[L-sum];
if (sum == L-sum)
sol -= 2;
}
}
long long scad = 0;
for (int i = 1; i <= c; i++)
{
int x = m1[L-(a[i]<<1)];
scad += m1[L-(a[i]<<1)];
}
for (int i = 1; i <= c; i++)
scad -= 2*m2[L-(a[i]*3)];
sol -= (scad<<2);
sol /= 24;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
read();
solve();
printf("%lld", sol);
return 0;
}