Pagini recente » Cod sursa (job #492876) | Cod sursa (job #2057412) | Cod sursa (job #1619095) | Cod sursa (job #970981) | Cod sursa (job #1497138)
#include <cstdio>
#include <vector>
#define NMAX 1027
#define MOD 69257
#define LL long long
using namespace std;
int n;
unsigned LL sum, ans, v[NMAX];
struct tabel
{
LL val;
int x;
int y;
} tmp;
vector <tabel> dsp[MOD];
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
scanf("%d %lld", &n, &sum);
for(int i = 1; i<= n; ++i) scanf("%lld", &v[i]);
for(int i = 1; i<= n; ++i)
{
for(int j = i+1; j<= n; ++j)
{
tmp.val = v[i]+v[j];
tmp.x = i;
tmp.y = j;
LL poz = tmp.val%MOD;
dsp[poz].push_back(tmp);
}
}
for(int i = 1; i<= n; ++i)
{
for(int j = i+1; j<= n; ++j)
{
LL poz = (sum - v[i] - v[j])%MOD;
int sze = dsp[poz].size();
for(int k = 0; k< sze; ++k)
{
if(dsp[poz][k].val == sum - v[i] - v[j])
{
if(dsp[poz][k].x == i) continue;
if(dsp[poz][k].x == j) continue;
if(dsp[poz][k].y == i) continue;
if(dsp[poz][k].y == j) continue;
//printf("%d %d %d %d\n", i, j, dsp[poz][k].x, dsp[poz][k].y);
ans++;
}
}
}
}
printf("%lld\n", ans/6);
return 0;
}