Submission #1286356

#TimeUsernameProblemLanguageResultExecution timeMemory
1286356juan_alejandroSnake Escaping (JOI18_snake_escaping)C++20
5 / 100
2095 ms2684 KiB
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#pragma GCC optimize("O2")
using namespace std;
int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cout.precision(0);
    cout<<fixed;
    int k,q;
    cin>>k>>q;
    string x;
    cin>>x;
    int n=(1LL<<k)-1;
    while(q--)
    {
        string s;
        cin>>s;
        int res=0;
        int b=(n+1)>>1;
        for (int i = 0; i < k; i++,b>>=1)
        {
            if(s[i]=='1')
            res|=b;
        }
        int ans=0;
        //cout<<res<<" res"<<endl;
        for (int i = 0; i <= n; i++)
        {
            //cout<<"for i:"<<i<<endl;
            int v=(i^res);
            //cout<<"xor:"<<v<<endl;
            int bb=(n+1)>>1;
            bool es=true;
            for (int j = 0; j < k; j++,bb>>=1)
            {
                if(s[j]!='?')
                {
                    if((v&bb)!=0)
                    {
                        //cout<<j<<"-th bit is different"<<endl;
                        es=false;
                        break;
                    }
                }
            }
            if(es)
            ans+=(x[i]-'0');
        }
        cout<<ans<<endl;
    }
    return 0;
}
#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...