Submission #1161299

#TimeUsernameProblemLanguageResultExecution timeMemory
1161299brover29Snake Escaping (JOI18_snake_escaping)C++17
5 / 100
2093 ms2532 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;
ll calc(ll x){
    ll sum=0;
    for(ll mask=x;mask>=0;mask=((mask-1)&x)){
        sum+=s[mask]-'0';
        if(mask==0)break;
    }
    return sum;
}
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;
        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=must;mask>=0;mask=((mask-1)&must)){
            sum+=calc(mask+x)*(__builtin_popcount(mask)&1 ? 1 : -1);
            if(mask==0)break;
        }
        cout<<abs(sum)<<'\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...