Advertisement
What_Ever

Untitled

Feb 5th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdio>
  4. #include <algorithm>
  5. using namespace std;
  6. #define all(c) (c).begin(),(c).end()
  7. int n,m;
  8. string bckp;
  9. vector<string> inp,current,res;
  10. int k[10];
  11. char swaps(char s)
  12. {
  13.     return s == '1' ? '0' : '1';
  14. }
  15. void solve(int i,int bits,int pos)
  16. {
  17.     if(bits == k[i])
  18.     {
  19.         current.push_back(inp[i]);
  20.         return;
  21.     }
  22.     if(pos == n) return;
  23.     inp[i][pos] = swaps(inp[i][pos]);
  24.     solve(i,bits+1,pos+1);
  25.     solve(i,bits,pos+1);
  26. }
  27. int main()
  28. {
  29.     string temp;
  30.     cin >> n >> m;
  31.     for(int i = 0 ; i < m ; i++)
  32.     {
  33.         cin >> temp;
  34.         inp.push_back(temp);
  35.         cin >> k[i];
  36.     }
  37.     bckp = inp[0];
  38.     solve(0,0,0);
  39.     inp[0] = bckp;
  40.     res = current;
  41.     sort(all(res));
  42.     for(int i = 1 ; i < m ; i++)
  43.     {
  44.         bckp = inp[i];
  45.         solve(i,0,0);
  46.         inp[i] = bckp;
  47.         sort(all(current));
  48.         set_intersection(all(res),all(current),res.begin());
  49.         current.clear();
  50.     }
  51.     for(int i = 0 ; i < m ; i++)
  52.     {
  53.         res.erase(find(all(res),inp[i]));
  54.     }
  55.     cout << res.size();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement