#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ii pair<int,int>
#define all(x) x.begin(),x.end()
#define fo(i, a, b) for (int i=(a),_b=(int)(b);i<=_b;++i)
#define fd(i, a, b) for (int i=(a),_b=(int)(b);i>=_b;--i)
#define umax(a, b) a=max(a, b)
#define umin(a, b) a=min(a, b)
#define ve vector
#define vi ve<int>
#define vl ve<ll>
#define vvi ve<vi>
#define ar array
#define fi first
#define se second
const int N = 1e6+5;
int L, q, f[N], sos[N], super[N];
string s;
void sol(int tc) {
cin >> L >> q >> s;
fo(i,0,(1<<L)-1) {
f[i] = sos[i] = super[i] = s[i]-'0';
}
fo(i,0,L-1) fo(j,0,(1<<L)-1) {
if (j>>i&1) sos[j] += sos[j^(1<<i)];
else super[j] += super[j^(1<<i)];
}
while (q--) {
string t; cin >> t; reverse(all(t));
int p0 = 0, p1 = 0, pm = 0;
fo(i,0,L-1) {
if (t[i]=='0') p0 |= (1<<i);
else if (t[i]=='1') p1 |= (1<<i);
else pm |= (1<<i);
}
int ans = 0;
if (__builtin_popcount(pm)<=6) {
for (int x = pm; ; x = (x-1)&pm) {
ans += f[x|p1];
if (x==0) break;
}
} else if (__builtin_popcount(p0)<=6) {
for (int x = p0; ; x = (x-1)&p0) {
ans += (__builtin_parity(x)?1:-1)*super[x|p1];
if (x==0) break;
}
} else {
for (int x = p1; ; x = (x-1)&p1) {
ans += (__builtin_parity(x)?1:-1)*sos[x|pm];
if (x==0) break;
}
}
cout << abs(ans) << '\n';
}
}
signed main() {
cin.tie(0) -> sync_with_stdio(0);
if (fopen("A.inp", "r")) freopen("A.inp", "r", stdin);
int tc = 1; // cin >> tc;
fo(i,1,tc) sol(i);
}
Compilation message (stderr)
snake_escaping.cpp: In function 'int main()':
snake_escaping.cpp:63:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
63 | if (fopen("A.inp", "r")) freopen("A.inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
# | 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... |