Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Даниил Королёв on 31.10.2018.
- //
- #include <vector>;
- #include <iostream>;
- #include <cmath>;
- using namespace std;
- int getBit(int number, int shift) {
- return (number >> shift) % 2;
- }
- int invert(int number) {
- if (number == 0) return 1;
- else return 0;
- }
- int main() {
- int n, m;
- cin >> n >> m;
- int size = pow(2, n);
- int matrix[size][n];
- int pairs[2 * m];
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < n; j++) {
- matrix[i][j] = getBit(i, n - j - 1);
- }
- }
- for (int i = 0; i < 2 * m; i++) {
- cin >> pairs[i];
- }
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < 2 * m; j += 2) {
- int first = pairs[j];
- int second = pairs[j + 1];
- int firstBit = matrix[i][abs(first) - 1];
- int secondBit = matrix[i][abs(second) - 1];
- if (first < 0) {
- firstBit = invert(firstBit);
- }
- if (second < 0) {
- secondBit = invert(secondBit);
- }
- if (secondBit == 0 && firstBit == 0) {
- break;
- } else {
- if (j == 2 * (m - 1)) {
- cout << "NO";
- return 0;
- } else {
- continue;
- }
- }
- }
- }
- cout << "YES";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement