Submission #1158707

#TimeUsernameProblemLanguageResultExecution timeMemory
1158707HakunaSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2095 ms4324 KiB
#include <bits/stdc++.h>
using namespace std;

int l, Q;
string s;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    
    cin >> l >> Q;
    cin >> s;
    
    while (Q--) {
        string d;
        cin >> d;
        
        queue< pair<int, int> > q;
        q.emplace(0, 0);
        long long ans = 0;
        while (!q.empty()) {
            auto [num, pos] = q.front();
            q.pop();
            
            if (pos == d.size()) {
                ans += s[num] - '0';
                continue;
            }
            
            if (d[pos] == '?') {
                q.emplace(num | (1 << (d.size() - 1 - pos)), pos + 1);
                q.emplace(num, pos + 1);
            } else {
                q.emplace(num | ((d[pos] - '0') << (d.size() - 1 - pos)), pos + 1);
            }
        }
        
        cout << ans << '\n';
    }

    return 0;
}
#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...