Submission #1158720

#TimeUsernameProblemLanguageResultExecution timeMemory
1158720HakunaSnake Escaping (JOI18_snake_escaping)C++20
12 / 100
2096 ms7932 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;
    
    unordered_map<string, int> mp;
    while (Q--) {
        string d;
        cin >> d;
        if (mp.count(d)) cout << mp[d] << '\n';
        else {
            int res = 0;
            for (int i = 0; i < (1 << l); i++) {
                bool check = 1;
                for (int j = 0; j < d.size(); j++) {
                    if (d[d.size() - j - 1] == '?') continue;
                    if (d[d.size() - j - 1] - '0' != ((i >> j) & 1)) {
                        check = 0;
                        break;
                    }
                }
                if (check) res += s[i] - '0';
            }
            
            cout << (mp[d] = 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...