Submission #1286426

#TimeUsernameProblemLanguageResultExecution timeMemory
1286426tormentSnake Escaping (JOI18_snake_escaping)C++20
65 / 100
2062 ms62144 KiB
#include<bits/stdc++.h>
using namespace std;
int L, q;
string T;
int S[(1 << 20)];
int dfs(int i, int mask){
    if(i == L)return S[mask];
    if(T[i] == '?')return dfs(i + 1, (mask << 1) | 1) + dfs(i + 1, mask << 1);
    if(T[i] == '1')return dfs(i + 1, (mask << 1) | 1);
    return dfs(i + 1, mask << 1);
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    string s;
    cin >> L >> q >> s;
    for(int i = 0;i < (1 << L);++i){
        S[i] = s[i] - '0';
    }
    map<string, int>memo;
    for(int i = 0;i < q;++i){
        cin >> T;
        if(memo.find(T) == memo.end())memo[T] = dfs(0, 0);
        cout << memo[T] << '\n';
    }
}
#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...