Submission #1158795

#TimeUsernameProblemLanguageResultExecution timeMemory
1158795brover29Snake Escaping (JOI18_snake_escaping)C++17
0 / 100
1 ms320 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=(1ll<<20);
const string br="617283";
#define sz(a)(ll)a.size()
#define f first
#define s second
ll l,q;
string s;
map<string,ll>mp;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>l>>q>>s;
    ll n=(1ll<<l);
    while(q--){
        string a;
        cin>>a;
        if(mp.count(a)){
            cout<<mp[a]<<'\n';
            continue;
        }
        ll x=0;
        reverse(a.begin(),a.end());
        ll must=0;

        for(ll i=0;i<a.size();i++){
            if(a[i]=='?')x|=(1ll<<i);
            if(a[i]=='1')must|=(1ll<<i);
        }ll sum=0;
       // cout<<must<<' '<<x<<'\n';
        for(ll mask=x;mask>=0;mask=((mask-1)&x)){
            sum+=s[mask+must]-'0';
            if(mask==0)break;
        }
        cout<<sum<<'\n';
        mp[a]=sum;
    }
}
#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...