#include <bits/stdc++.h>
using namespace std;
#define For(i, a, b, x) for (int i = (a); i <= (b); i += (x))
#define Ford(i, a, b, x) for (int i = (a); i >= (b); i -= (x))
typedef pair<int, int> pii;
long long n, q, a[(1 << 20) + 5], dp[(1 << 20) + 5], save, cnt, ans;
string s;
char x;
bitset<215> mask(1);
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// freopen("voi.inp", "r", stdin);
// freopen("voi.out", "w", stdout);
cin >> n >> q;
For(i, 0, (1 << n) - 1, 1){
cin >> x;
dp[i] = x - '0';
}
For(i, 1, q, 1){
cin >> s;
cnt = 0; save = 0; ans = 0;
mask.reset();
mask.set(0);
Ford(c, s.size() - 1, 0, 1){
if (s[c] == '1') save += (1 << cnt++);
else if (s[c] == '?') mask |= (mask << (1 << cnt++));
else cnt++;
}
For(j, 0, 210, 1) if (mask[j]) ans += dp[save + j];
cout << ans << '\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... |