Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- #define all(c) (c).begin(),(c).end()
- int n,m;
- vector<string> inp,current,res;
- int k[10];
- char swaps(char s)
- {
- return s == '1' ? '0' : '1';
- }
- void solve(int i,int bits)
- {
- if(bits == k[i])
- {
- current.push_back(inp[i]);
- return;
- }
- for(int j = 0 ; j < n ; j++)
- {
- inp[i][j] = swaps(inp[i][j]);
- solve(i,bits+1);
- inp[i][j] = swaps(inp[i][j]);
- }
- }
- int main()
- {
- string temp;
- cin >> n >> m;
- for(int i = 0 ; i < m ; i++)
- {
- cin >> temp;
- inp.push_back(temp);
- cin >> k[i];
- }
- solve(0,0);
- res = current;
- sort(all(res));
- for(int i = 1 ; i < m ; i++)
- {
- solve(i,0);
- sort(all(current));
- set_intersection(all(res),all(current),res.begin());
- }
- for(int i = 0 ; i < m ; i++)
- {
- res.erase(find(all(res),inp[i]));
- }
- cout << res.size();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement