Submission #729409

#TimeUsernameProblemLanguageResultExecution timeMemory
729409pccSnake Escaping (JOI18_snake_escaping)C++14
12 / 100
231 ms9672 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define fs first
#define sc second

const int mxn = pow(3,11);
int ans[mxn];

void solve(){
	int n,q;
	cin>>n>>q;
	int arr[1<<n];
	for(auto &i:arr){
		char c;
		cin>>c;
		i = c-'0';
	}
	for(int i = 0;i<(1<<n);i++){
		for(int j = 0;j<(1<<n);j++){
			int total = 0;
			int p = 1;
			for(int k = 0;k<n;k++){
				if(j&(1<<k))total += p*2;
				else if(i&(1<<k))total += p;
				p *= 3;
			}
			ans[total] += arr[i];
		}
	}
	while(q--){
		string s;
		cin>>s;
		int p = 1;
		int t = 0;
		reverse(s.begin(),s.end());
		for(int i = 0;i<n;i++){
			if(s[i] == '?')t += p*2;
			else if(s[i] == '1')t += p;
			p *= 3;
		}
		cout<<ans[t]<<'\n';
	}
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t = 1;
	while(t--)solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...