Submission #1350674

#TimeUsernameProblemLanguageResultExecution timeMemory
1350674WarinchaiSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2095 ms5920 KiB
#include<bits/stdc++.h>
using namespace std;

int val[(1<<20)+5];

int solve1(string s){
    reverse(s.begin(),s.end());
    vector<int>pos;
    int temp=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='1')temp+=(1<<i);
        else{
            if(s[i]=='?')pos.push_back(i);
        }
    }
    int ans=0;
    if(pos.empty())return val[temp];
    for(int i=0;i<(1<<pos.size());i++){
        int sum=temp;
        for(int j=0;j<pos.size();j++){
            if((i>>j)&1)sum+=(1<<pos[j]);
        }
        ans+=val[sum];
    }
    return ans;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int l,q;cin>>l>>q;
    string s;cin>>s;
    for(int i=0;i<(1<<l);i++)val[i]=s[i]-'0';
    for(int i=0;i<q;i++){
        string s;cin>>s;
        cout<<solve1(s)<<"\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...