fork(2) download
  1. #include<bits/stdc++.h>
  2. typedef long long int lli;
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. lli i,j,k,n,m,t;
  8.  
  9. lli mask;
  10.  
  11. cin>>n>>m;
  12.  
  13. string str[n+1],st,stt;
  14. lli mx,sz;
  15.  
  16. map< pair<string,lli>,lli>mp;
  17.  
  18. for(i=0;i<n;i++)
  19. {
  20. cin>>str[i];
  21.  
  22. sz=str[i].size();
  23. mx=1LL<<sz;
  24.  
  25. st=str[i];
  26.  
  27. for(j=1;j<mx;j++)
  28. {
  29. stt="";
  30. mask=0;
  31.  
  32. for(k=0;k<sz;k++)
  33. {
  34. if(j & (1LL<<k))
  35. {
  36.  
  37. mask|=(1<<k);
  38. stt+=st[k];
  39. }
  40. }
  41.  
  42. mp[{stt,mask}]++;
  43. }
  44. }
  45.  
  46. lli q;
  47.  
  48. cin>>q;
  49.  
  50. while(q--)
  51. {
  52. cin>>st;
  53.  
  54. stt="";
  55. mask=0;
  56.  
  57. for(i=0;i<st.size();i++)
  58. {
  59. if(st[i]=='?')
  60. continue;
  61.  
  62. mask|=(1<<i);
  63. stt+=st[i];
  64. }
  65.  
  66.  
  67. if(mask==0)
  68. cout<<n<<"\n";
  69. else
  70. cout<<mp[{stt,mask}]<<"\n";
  71. }
  72. }
  73.  
Runtime error #stdin #stdout 0s 4668KB
stdin
Standard input is empty
stdout
Standard output is empty