제출 #828107

#제출 시각아이디문제언어결과실행 시간메모리
828107NhanBeooSnake Escaping (JOI18_snake_escaping)C++17
5 / 100
2070 ms4816 KiB
// Judges with GCC >= 12 only needs Ofast
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("O3,no-stack-protector,fast-math,unroll-loops,tree-vectorize")
// MLE optimization
// #pragma GCC optimize("conserve-stack")
// Old judges
// #pragma GCC target("sse4.2,popcnt,lzcnt,abm,mmx,fma,bmi,bmi2")
// New judges. Test with assert(__builtin_cpu_supports("avx2"));
// #pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native")
// Atcoder
// #pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma")

#include <bits/stdc++.h>
using namespace std;

// #define int ll
#define MAX LLONG_MAX
#define st first
#define nd second
#define endl '\n'
#define SZ(x) ((int)x.size())
#define ALL(x) x.begin(), x.end()
typedef long long ll;
typedef pair< int, int > ii;
typedef pair< int, ii > iii;
typedef vector< int > vi;
typedef vector< ii > vii;
typedef vector< iii > viii;
typedef vector< vi > vvi;
typedef vector< vii > vvii;
typedef vector< viii > vviii;

int n, q;
string s, tmp;

int dfs(int state, int i){
	// cout << state << ' ' << i << endl;
	if(i == n)  return s[state] - '0';
	if(tmp[i] == '0') return dfs(state, i+1);
	else if(tmp[i] == '1') return dfs(state|(1<<(n-i-1)), i+1);
	else return dfs(state, i+1) + dfs(state|(1<<(n-i-1)), i+1);
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> n >> q >> s;
	while(q--){
		cin >> tmp;
		int state = 0;
		bool ans = false;
		for(int i=0; i<n; i++){
			if(tmp[i] == '0') continue;
			else if(tmp[i] == '1') state |= (1 << (n - i - 1));
			else{
				cout << dfs(state, i) << endl;
				ans = true;
				break;
			}
		}
		if(!ans) cout << (s[state] - '0') << endl;
	}
} 
#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...