Submission #1237567

#TimeUsernameProblemLanguageResultExecution timeMemory
1237567GeforgsSnake Escaping (JOI18_snake_escaping)C++20
12 / 100
2095 ms25736 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <unordered_map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> #define ll long long #define ld long double #define inf (ll)(2*1e18) #define sort(a) sort(a.begin(), a.end()) #define reverse(a) reverse(a.begin(), a.end()) #define pb push_back #define endl "\n" using namespace std; void solve(){ ll l, q, n, i, j, mask, s1, s2, res=0; char x; cin>>l>>q; n = (1<<l); vector<ll> a(n); vector<ll> b(n); vector<ll> c(n); for(i=0;i<n;++i){ cin>>x; a[i] = x - '0'; b[i] = a[i]; c[(n-1)^i] = a[i]; } for(i=0;i<l;++i){ for(mask=0;mask<n;++mask){ if(mask&(1<<i)){ b[mask] += b[mask^(1<<i)]; c[mask] += c[mask^(1<<i)]; } } } for(i=0;i<q;++i){ s1 = 0; s2 = 0; for(j=l-1;j>=0;--j){ cin>>x; if(x == '1'){ s1 += (1<<j); }else if(x == '?'){ s2 += (1<<j); } } res = 0; for(mask=s1;mask>0;mask=(mask-1)&s1){ if(__builtin_popcountll(mask^s1)&1){ res -= b[s2|mask]; }else{ res += b[s2|mask]; } } if(__builtin_popcountll(mask^s1)&1){ res -= b[s2|mask]; }else{ res += b[s2|mask]; } cout<<res<<endl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); srand(time(nullptr)); ll t=1; // cin>>t; for(;t>0;--t){ solve(); } 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...