Pagini recente » Cod sursa (job #2489588) | Cod sursa (job #2522829) | Cod sursa (job #3285155) | Cod sursa (job #2385579) | Cod sursa (job #2229712)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("oite.in");
ofstream fout ("oite.out");
const int P = 123457;
const short NMAX = 1025;
int n , S , a[NMAX];
struct T
{
int val , ind1 , ind2;
};
vector < T > L[P];
int main()
{
int p , sol = 0;
T w;
fin >> n >> S;
for(int i = 1 ; i <= n ; i++)
fin >> a[i];
for(int i = 1 ; i < n ; i++)
for(int j = i + 1 ; j <= n ; j++)
if(a[i] + a[j] <= S)
{
w . val = a[i] + a[j];
w . ind1 = i;
w . ind2 = j;
p = w . val % P;
L[p] . push_back(w);
}
for(int i = 1 ; i < n ; i++)
for(int j = i + 1 ; j <= n ; j++)
if(a[i] + a[j] <= S)
{
p = (S - a[i] - a[j]) % P;
for(auto it : L[p])
if(it . val + a[i] + a[j] == S && i != it . ind1 && i != it . ind2 && j != it . ind1 && j != it . ind2)
++sol;
}
fout << sol / 6 << '\n';
fin.close();
fout.close();
return 0;
}