/***************************************************
User name: 寻雾启示wpf
Note: p2 枚举O(n^4)—>二分查找O(n^2logn)
****************************************************/#include<iostream>#include<algorithm>usingnamespacestd;
#define MAX_N 50bool my_binary_search(int *b, int lo, int hi, int dest)
{
if (lo + 1 == hi)
if (b[lo] == dest)
return1;
elsereturn0;
int mi = (lo + hi) >> 1;
if (b[mi] <= dest)
return my_binary_search(b, mi, hi, dest);
elsereturn my_binary_search(b, lo, mi, dest);
}
int main()
{
int n, m;
int a[MAX_N];
int b[MAX_N*MAX_N];
while (cin >> n && n != 0)
{
cin >> m;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
b[i*n + j] = a[i] + a[j];
sort(b, b + n*n);
int flag = 0;
for (int i = 0; i < n*n; i++)
if (my_binary_search(b, 0, n*n, m - b[i]))
flag++;
if (flag == 0)
cout << "No" << endl;
elseprintf("方案数有%d种\n", flag);
}
return0;
}