#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define len(s) (ll) s.size()
const ll I = 2e5 + 9;
const ll Z = 998244353;
using namespace std;
vector<ll> box;
ll n, m, a[I], rs = 0;
int main()
{
cin.tie(0)->sync_with_stdio(0);
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
int mid = n / 2;
for (int bit = 0; bit < (1 << (n - mid)); bit++)
{
ll sum = 0;
for (int id = 0; id < (n - mid); id++)
{
if (bit & (1 << id))
sum += a[id + mid + 1];
}
box.push_back(sum);
}
for (int bit = 0; bit < (1 << mid); bit++)
{
ll sum = 0;
for (int id = 0; id < mid; id++)
{
if (bit & (1 << id))
sum += a[id + 1];
}
rs += upper_bound(box.begin(), box.end(), m - sum) - box.begin();
}
cout << rs;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |