Advertisement
Danielto2000

Untitled

Nov 2nd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. //
  2. // Created by Даниил Королёв on 31.10.2018.
  3. //
  4. #include <vector>;
  5. #include <iostream>;
  6. #include <cmath>;
  7.  
  8. using namespace std;
  9.  
  10. int getBit(int number, int shift) {
  11.     return (number >> shift) % 2;
  12. }
  13.  
  14. int invert(int number) {
  15.     if (number == 0) return 1;
  16.     else return 0;
  17. }
  18.  
  19. int main() {
  20.     int n, m;
  21.     cin >> n >> m;
  22.     int size = pow(2, n);
  23.     int matrix[size][n];
  24.     int pairs[2 * m];
  25.     for (int i = 0; i < size; i++) {
  26.         for (int j = 0; j < n; j++) {
  27.             matrix[i][j] = getBit(i, n - j - 1);
  28.         }
  29.     }
  30.     for (int i = 0; i < 2 * m; i++) {
  31.         cin >> pairs[i];
  32.     }
  33.     for (int i = 0; i < size; i++) {
  34.         for (int j = 0; j < 2 * m; j += 2) {
  35.             int first = pairs[j];
  36.             int second = pairs[j + 1];
  37.             int firstBit = matrix[i][abs(first) - 1];
  38.             int secondBit = matrix[i][abs(second) - 1];
  39.             if (first < 0) {
  40.                 firstBit = invert(firstBit);
  41.             }
  42.             if (second < 0) {
  43.                 secondBit = invert(secondBit);
  44.             }
  45.             if (secondBit == 0 && firstBit == 0) {
  46.                 break;
  47.             } else {
  48.                 if (j == 2 * (m - 1)) {
  49.                     cout << "NO";
  50.                     return 0;
  51.                 } else {
  52.                     continue;
  53.                 }
  54.             }
  55.         }
  56.     }
  57.     cout << "YES";
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement