Submission #1158781

#TimeUsernameProblemLanguageResultExecution timeMemory
1158781HakunaSnake Escaping (JOI18_snake_escaping)C++20
22 / 100
2095 ms65484 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, long long> mp; while (Q--) { string d; cin >> d; if (mp.count(d)) cout << mp[d] << '\n'; else { int val = 0; vector<int> v; for (int i = 0; i < d.size(); i++) { if (d[i] == '?') { v.push_back(d.size() - i - 1); } else { val |= ((d[i] - '0') << (d.size() - 1 - i)); } } int res = 0; queue< pair<int, int> > q; q.emplace(val, 0); while (!q.empty()) { auto [num, pos] = q.front(); q.pop(); if (pos == v.size()) { res += s[num] - '0'; continue; } q.emplace(num | (1 << v[pos]), pos + 1); q.emplace(num, pos + 1); } 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...