#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 {
vector<int> nums{0};
for (int i = 0; i < d.size(); i++) {
if (d[i] == '?') {
int n = nums.size();
for (int j = 0; j < n; j++) {
nums.emplace_back(nums[j] |
(1 << (d.size() - 1 - i)));
}
} else if (d[i] == '1') {
for (int j = 0; j < nums.size(); j++) {
nums[j] |= 1 << (d.size() - 1 - i);
}
}
}
long long res = 0;
for (int i = 0; i < nums.size(); i++) {
res += s[nums[i]] - '0';
}
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... |