Submission #1148739

#TimeUsernameProblemLanguageResultExecution timeMemory
1148739ByeWorldSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2096 ms8904 KiB
#include <bits/stdc++.h> #define int long long #define ll long long #define pb push_back #define fi first #define se second #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) #define ld long double using namespace std; typedef pair<int,int> pii; typedef pair<char,char> pcc; typedef pair<pii,int> ipii; typedef pair<pii,pii> ipiii; const int MAXN = (1<<20)+10; const int SQRT = 300; const int MAXA = 50; const int LOG = 20; const int INF = 1e18+10; const ld EPS = 1e-12; const int MOD = 998244353; int sum(int a, int b){ return (a+b)%MOD; } void chsum(int &a, int b){ a = (a+b)%MOD; } void chsub(int &a, int b){ a = (a+MOD-b)%MOD; } int mul(int a, int b){ return (a*b)%MOD; } void chmul(int &a, int b){ a = (a*b)%MOD; } void chmn(int &a, int b){ a = min(a, b); } void chmx(int &a, int b){ a = max(a, b); } int dp[MAXN], v[MAXN], n, q; signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>q; for(int i=0; i<(1<<n); i++){ char x; cin>>x; v[i] = (int)(x-'0'); } while(q--){ string p; cin>>p; reverse(p.begin(), p.end()); vector <int> z, o, qu; for(int i=0; i<p.size(); i++){ char in = p[i]; if(in=='0') z.pb(i); else if(in=='1') o.pb(i); else qu.pb(i); } // if(qu.size() <= 6){ int mask = 0; for(int i=0; i<p.size(); i++){ char in = p[i]; if(in=='1') mask += (1<<i); } int siz = qu.size(), ans = 0; for(int x=0; x<(1<<siz); x++){ int nw = mask; for(int i=0; i<siz; i++) if((x>>i) & 1) nw |= (1<<(qu[i])); ans += v[nw]; } cout << ans << '\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...