제출 #286819

#제출 시각아이디문제언어결과실행 시간메모리
286819MatheusLealVSnake Escaping (JOI18_snake_escaping)C++17
22 / 100
884 ms26360 KiB
#include <bits/stdc++.h> #define f first #define s second #define pb push_back #define mp make_pair #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() using namespace std; typedef pair<int, int> pii; #define N 350010 int n, q; string t; int ans[1600000], pot3[30]; void solve(int i, int mask, int mask2, int cost){ if(i >= n){ ans[mask2] += cost; return; } solve(i + 1, mask, mask2 + 2*pot3[i], cost); // adiciona ? if(mask & (1<<i)) solve(i + 1, mask, mask2 + pot3[i], cost); // adiciona 1 else solve(i + 1, mask, mask2, cost); // adiciona 0 } int32_t main(){ ios::sync_with_stdio(false); cin.tie(0); cin>>n>>q; cin>>t; pot3[0] = 1; for(int i = 1; i < 30; i++) pot3[i] = (3*pot3[i-1]); for (int mask=0; mask<(1<<n); ++mask){ solve(0, mask, 0, (t[mask]-'0')); } while(q--){ string s; int mask = 0; cin>>s; reverse(all(s)); for(int i = 0; i < n; i++){ if(s[i] == '1') mask += pot3[i]; else if(s[i] == '?') mask += 2*pot3[i]; } cout<<ans[mask]<<"\n"; } }
#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...