#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define MOD 998244353
#define MOD2 1000000007
#define vt vector
#define endl '\n'
#define pb push_back
#define pf push_front
#define all(x) x.begin(),x.end()
#define sz(x) (int)((x).size())
#define uset unordered_set
#define umap unordered_map
#define mset multiset
#define fi first
#define se second
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define each(i,a) for(auto &i:a)
struct pii {
int x, y;
bool operator<(const pii &a) const { return x == a.x ? y < a.y : x < a.x; }
bool operator>(const pii &a) const { return x == a.x ? y > a.y : x > a.x; }
bool operator==(const pii &a) const { return x == a.x && y == a.y; }
bool operator!=(const pii &a) const { return x != a.x || y != a.y; }
pii operator+(const pii &a) const { return {x+a.x, y+a.y}; }
pii operator-(const pii &a) const { return {x-a.x, y-a.y}; }
pii operator*(const int &a) const { return {x*a, y*a}; }
pii operator/(const int &a) const { return {x/a, y/a}; }
};
struct pll {
ll x, y;
bool operator<(const pll &a) const { return x == a.x ? y < a.y : x < a.x; }
bool operator>(const pll &a) const { return x == a.x ? y > a.y : x > a.x; }
bool operator==(const pll &a) const { return x == a.x && y == a.y; }
bool operator!=(const pll &a) const { return x != a.x || y != a.y; }
pll operator+(const pll &a) const { return {x+a.x, y+a.y}; }
pll operator-(const pll &a) const { return {x-a.x, y-a.y}; }
pll operator*(const ll &a) const { return {x*a, y*a}; }
pll operator/(const ll &a) const { return {x/a, y/a}; }
};
template<class T> bool ckmin(T& a, const T& b) {
return b < a ? a = b, 1 : 0; }
template<class T> bool ckmax(T& a, const T& b) {
return a < b ? a = b, 1 : 0; }
int N, Q;
int a[1<<20];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> Q;
string s; cin >> s;
rep(i,0,1<<N) {
a[i] = s[i]-'0';
}
while (Q--) {
string t; cin >> t;
int ans = 0;
rep(i,0,1<<N) {
bool g = 1;
rep(k,0,N) {
if (t[k] == '0' && (i&(1<<(N-1-k))) != 0) {
g = 0;
break;
} else if (t[k] == '1' && (i&(1<<(N-1-k))) == 0) {
g = 0;
break;
}
}
if (g) ans += a[i];
}
cout << ans << endl;
}
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... |