Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int k,m,q;
- int i,j,c;
- unordered_map <int,int> mp;
- unordered_map <string,bool> visit;
- set <int> s,s1;
- string t;
- int main(){
- scanf("%d%d",&k,&m);
- for (i = 0; i < k; i++){
- c = 0;
- cin >> t;
- for (j = 0; j < m; j++) if (t[j] == '1') c |= 1 << (m-j-1);
- mp[c] = i;
- s.insert(c);
- }
- scanf("%d",&q);
- for (i = 0; i < q; i++){
- s1.clear();
- c = 0;
- scanf("%d",&k);
- cin >> t;
- if (visit[t]) continue;
- visit[t] = true;
- for (j = 0; j < m; j++)
- if (t[j] == '1') c |= 1 << (m-j-1);
- for ( ; j <= k; j++){
- if (s.find(c) != s.end()) s1.insert(c);
- if (j == k) continue;
- c = (c<<1)&((1<<m)-1);
- if (t[j] == '1') c |= (1<<0);
- }
- if (s1.empty()) printf("OK\n");
- else{
- c = 0;
- for (auto c1 : s1) c |= 1 << mp[c1];
- for (j = 0; j < m; j++) if ((1<<j) & c) printf("%d ",j+1);
- printf("\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement