Submission #1050366

#TimeUsernameProblemLanguageResultExecution timeMemory
1050366vjudge1Snake Escaping (JOI18_snake_escaping)C++17
5 / 100
2031 ms27396 KiB
#include <bits/stdc++.h> #define f first #define s second using namespace std; string s; int n, m, q; map<string, map<int, long long>> mp; long long b(int p, int l, int r, string s1){ if(mp[&s[p]][l]==0){ while(s1[p]!='?'&&p<m){ if(s1[p]=='0'){ r=(l+r)/2; }else{ l=(l+r)/2; } p++; } if(p==m){ return s[l]-'0'; }else{ long long cnt=b(p+1, l, (r+l)/2, s1)+b(p+1, (r+l)/2, r, s1); if(cnt==0){ mp[&s1[p]][l]=-1; }else{ mp[&s1[p]][l]=cnt; } return cnt; } }else{ return max(mp[&s[p]][l], 0ll); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >>m >> q; n=pow(2, m); cin >>s; string s1; while(q--){ cin >> s1; cout << b(0, 0, n, s1) << "\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...