제출 #680255

#제출 시각아이디문제언어결과실행 시간메모리
680255kakayoshiSnake Escaping (JOI18_snake_escaping)C++14
12 / 100
2093 ms42604 KiB
#include <bits/stdc++.h> using namespace std; #define forw(i,a,b) for(ll i=a;i<=b;i++) #define forb(i,a,b) for(int i=a;i>=b;i--) #define pu push #define pb push_back #define fi first #define se second #define all(a) a.begin(),a.end() typedef long long int ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef pair<ll,pair<ll,ll> > plll; const ll maxN=(1<<13)+5; const ll oo=1e18; unordered_map<ll,ll> save[maxN]; ll n,q; void solve() { cin>>n>>q; forw(mask1,0,(1<<n)-1) { char c; cin>>c; forw(mask2,0,(1<<n)-1) { ll tmp=mask1&mask2; ll new_mask=mask1-tmp; save[mask2][new_mask]+=(c-'0'); //if (mask2==6 && new_mask==0) cout<<mask1<<" "<<(c-'0')<<endl; } } while (q--) { string s; cin>>s; reverse(all(s)); ll mask1=0; ll mask2=0; forw(i,0,n-1) if (s[i]=='?') mask2+=(1LL<<i); else mask1+=(1LL<<i)*(s[i]=='1'); if (save[mask2].find(mask1)!=save[mask2].end()) cout<<save[mask2][mask1]<<"\n"; else cout<<0<<"\n"; } return; } int main() { ios::sync_with_stdio(0); cin.tie(0); //freopen("c.inp","r",stdin); //freopen("c.out","w",stdout); 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...