Submission #729399

#TimeUsernameProblemLanguageResultExecution timeMemory
729399PringSnake Escaping (JOI18_snake_escaping)C++14
12 / 100
2067 ms18848 KiB
#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; #define endl '\n' const int MXN = 1030, MXL = 10; int l, q, n; string s, t; map<string, int> M; bool MATCH(int x) { for (int i = 0; i < l; i++) { if (t[i] == '?') { x >>= 1; continue; } if ((t[i] & 1) ^ (x & 1)) return false; x >>= 1; } return true; } int SOLVE() { int ans = 0; for (int i = 0; i < n; i++) { if (MATCH(i)) { ans += s[i] - '0'; } } return ans; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> l >> q >> s; n = (1 << l); while (q--) { cin >> t; reverse(t.begin(), t.end()); auto it = M.find(t); if (it == M.end()) { int x = SOLVE(); cout << x << endl; M[t] = x; } else { cout << it -> second << endl; } } 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...