#include <bits/stdc++.h>
using namespace std;
int l, Q;
string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> l >> Q;
cin >> s;
unordered_map<string, long long> mp;
while (Q--) {
string d;
cin >> d;
if (mp.count(d)) cout << mp[d] << '\n';
else {
int val = 0;
vector<int> v;
for (int i = 0; i < d.size(); i++) {
if (d[i] == '?') {
v.push_back(d.size() - i - 1);
} else {
val |= ((d[i] - '0') << (d.size() - 1 - i));
}
}
int res = 0;
queue< pair<int, int> > q;
q.emplace(val, 0);
while (!q.empty()) {
auto [num, pos] = q.front();
q.pop();
if (pos == v.size()) {
res += s[num] - '0';
continue;
}
q.emplace(num | (1 << v[pos]), pos + 1);
q.emplace(num, pos + 1);
}
cout << (mp[d] = res) << '\n';
}
}
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... |