Submission #702357

#TimeUsernameProblemLanguageResultExecution timeMemory
702357bebraSnake Escaping (JOI18_snake_escaping)C++17
5 / 100
2069 ms15116 KiB
#include <bits/stdc++.h>
using namespace std;

#define dbg(x) cerr << #x << ": " << x << endl;


int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int k, q;
    cin >> k >> q;

    string s;
    cin >> s;

    while (q--) {
        string t;
        cin >> t;
        reverse(t.begin(), t.end());
        int total_mask = 0;
        vector<int> marks;
        for (int i = 0; i < k; ++i) {
            if (t[i] == '?') {
                marks.push_back(i);
            } else if (t[i] == '1') {
                total_mask |= 1 << i;
            }
        }
        int unknown_cnt = marks.size();
        int res = 0;
        for (int mask = 0; mask < (1 << unknown_cnt); ++mask) {
            int curr_mask = total_mask;
            for (int i = 0; i < unknown_cnt; ++i) {
                if (mask & (1 << i)) {
                    curr_mask |= 1 << marks[i];
                }
            }
            res += s[curr_mask] - '0';
        }
        cout << res << '\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...