Submission #115990

#TimeUsernameProblemLanguageResultExecution timeMemory
115990oolimrySnake Escaping (JOI18_snake_escaping)C++14
22 / 100
770 ms27768 KiB
#include <bits/stdc++.h> using namespace std; int value[2000000]; int memo[2000005]; int n , q; int tostring(string s){ int v = 0; for(int i = 0;i < n;i++){ v *= 3; if(s[i] == '0') v++; else if(s[i] == '1') v += 2; } return v; } int dp(string s){ int x = tostring(s); if(memo[x] != -1) return memo[x]; for(int i = 0;i < n;i++){ if(s[i] == '?'){ string s0 = s; string s1 = s; s0[i] = '0'; s1[i] = '1'; int ans = dp(s0) + dp(s1); //cout << s << " " << ans << "\n"; memo[x] = ans; return ans; } } int v = 0; for(int i = 0;i < n;i++){ v *= 2; if(s[i] == '1') v++; } //cout << s << " " << value[v] << "\n"; memo[x] = value[v]; return value[v]; } int main() { //freopen("i.txt","r",stdin); ios_base::sync_with_stdio(false); cin.tie(0); fill(memo,memo+2000000,-1); cin >> n >> q; string s; cin >> s; for(int i = 0;i < s.length();i++){ value[i] = s[i] - '0'; } for(int qq = 0;qq < q;qq++){ cin >> s; cout << dp(s) << "\n"; } return 0; }

Compilation message (stderr)

snake_escaping.cpp: In function 'int main()':
snake_escaping.cpp:52:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i < s.length();i++){
                   ~~^~~~~~~~~~~~
#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...