ac-library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub habara-k/ac-library

:heavy_check_mark: test/bitmatrix.test.cpp

Depends on

Code

#define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1308"

#include <atcoder/bitmatrix>
#include <vector>
#include <iostream>

using namespace atcoder;
using namespace std;

int main() {
    while (true) {
        int m, n, d; cin >> m >> n >> d;
        if (m == 0) break;

        BitMatrix<625,625> A(n*m, n*m);
        for (int i1 = 0; i1 < n; i1++) {
            for (int j1 = 0; j1 < m; j1++) {
                A[i1*m + j1][i1*m + j1] = 1;
                for (int i2 = 0; i2 < n; i2++) {
                    for (int j2 = 0; j2 < m; j2++) {
                        if (abs(i1 - i2) + abs(j1 - j2) == d) {
                            A[i1*m + j1][i2*m + j2] = 1;
                        }
                    }
                }
            }
        }
        vector<bool> b(n*m), x;
        for (int i = 0; i < n*m; i++) {
            int f; cin >> f; b[i] = f;
        }

        int rank = LinearEquation(A, b, x);
        cout << (rank != -1) << endl;
    }
}
#line 1 "test/bitmatrix.test.cpp"
#define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1308"

#include <atcoder/bitmatrix>
#include <vector>
#include <iostream>

using namespace atcoder;
using namespace std;

int main() {
    while (true) {
        int m, n, d; cin >> m >> n >> d;
        if (m == 0) break;

        BitMatrix<625,625> A(n*m, n*m);
        for (int i1 = 0; i1 < n; i1++) {
            for (int j1 = 0; j1 < m; j1++) {
                A[i1*m + j1][i1*m + j1] = 1;
                for (int i2 = 0; i2 < n; i2++) {
                    for (int j2 = 0; j2 < m; j2++) {
                        if (abs(i1 - i2) + abs(j1 - j2) == d) {
                            A[i1*m + j1][i2*m + j2] = 1;
                        }
                    }
                }
            }
        }
        vector<bool> b(n*m), x;
        for (int i = 0; i < n*m; i++) {
            int f; cin >> f; b[i] = f;
        }

        int rank = LinearEquation(A, b, x);
        cout << (rank != -1) << endl;
    }
}
Back to top page