Submission #1175864

#TimeUsernameProblemLanguageResultExecution timeMemory
1175864dostsSnake Escaping (JOI18_snake_escaping)C++20
100 / 100
482 ms34344 KiB
#include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define all(x) x.begin(),x.end() #define sp << " " << using namespace std; const int N = 1e4+1,MOD = 1e9+7,inf = 1e18; void solve() { int n,q; cin >> n >> q; int lim = (1<<n); string dizi; cin >> dizi; vi a(lim); for (int i = 0;i<lim;i++) a[i] = dizi[i]-'0'; vi sos(a),super(a); for (int i = 0;i<n;i++) { for (int j = 0;j<lim;j++) { if (j&(1<<i)) sos[j]+=sos[j^(1<<i)]; else super[j] += super[j^(1<<i)]; } } while (q--) { string s; cin >> s; int sifir = count(all(s),'0'); int bir = count(all(s),'1'); int soru = count(all(s),'?'); int basemask = 0,topmask = 0,zers = 0,ones = 0; for (int j = 0;j<n;j++) { if (s[j] == '1') basemask+=(1<<(n-j-1)),topmask+=(1<<(n-j-1)),ones+=(1<<(n-j-1)); else if (s[j] == '?') topmask+=(1<<(n-j-1)); else zers += (1<<(n-j-1)); } if (sifir <= 6) { int ans = super[basemask]; for (int s = zers;s > 0;s = (s-1)&zers) { int pc = __builtin_popcountll(s); if (pc%2) ans-=super[basemask^s]; else ans+=super[basemask^s]; } cout << ans << '\n'; } else if (bir <= 6) { int ans = sos[topmask]; for (int s = ones;s > 0;s = (s-1)&ones) { int pc = __builtin_popcountll(s); if (pc%2) ans-=sos[topmask^s]; else ans+=sos[topmask^s]; } cout << ans << '\n'; } else { //direk iterate int ans = a[basemask]; for (int s = topmask^basemask;s > 0;s=(topmask^basemask)&(s-1)) ans+=a[basemask^s]; cout << ans << '\n'; } } }; signed main() { ios_base::sync_with_stdio(0);cin.tie(0); #ifdef Dodi freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t = 1; //cin >> t; while (t --> 0) solve(); }
#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...