CP-Algorithms Library

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub cp-algorithms/cp-algorithms-aux

:heavy_check_mark: Inverse Matrix (Mod 2) (verify/structures/bitpack/inv_mod_2.test.cpp)

Depends on

Code

// @brief Inverse Matrix (Mod 2)
#define PROBLEM "https://judge.yosupo.jp/problem/inverse_matrix_mod_2"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#include "cp-algo/structures/bit_array_util.hpp"
#include <bits/stdc++.h>

using namespace std;
using namespace cp_algo::structures;

const int maxn = 1 << 12;
bit_array<2 * maxn> a[maxn];

void solve() {
    size_t n;
    cin >> n;
    cp_algo::big_string row;
    cp_algo::big_vector<size_t> lead(n);
    for(size_t i = 0; i < n; i++) {
        cin >> row;
        from_string(a[i], row);
        a[i].resize(2 * n);
        a[i].set(n + i);
        for(size_t j = 0; j < i; j++) {
            if(a[i][lead[j]]) {
                a[i].xor_hint(a[j], lead[j]);
            }
        }
        lead[i] = ctz(a[i]);
        if(lead[i] >= n) {
            cout << -1 << "\n";
            return;
        }
        for(size_t j = 0; j < i; j++) {
            if(a[j][lead[i]]) {
                a[j].xor_hint(a[i], lead[i]);
            }
        }
    }
    for(size_t i = 0; i < n; i++) {
        while(lead[i] != i) {
            swap(a[i], a[lead[i]]);
            swap(lead[i], lead[lead[i]]);
        }
        cout << to_string(a[i]).substr(n, n) << "\n";
    }
}

signed main() {
    //freopen("input.txt", "r", stdin);
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 1;
    while(t--) {
        solve();
    }
}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/resolver.py", line 290, in resolve
    bundled_code = language.bundle(path, basedir=basedir)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/languages/cplusplus.py", line 243, in bundle
    bundler.update(path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/languages/cplusplus_bundle.py", line 322, in update
    assert len(lines) == len(uncommented_lines)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Test cases

Env Name Status Elapsed Memory
g++ example_00 :heavy_check_mark: AC 2 ms 4 MB
g++ example_01 :heavy_check_mark: AC 2 ms 4 MB
g++ example_02 :heavy_check_mark: AC 2 ms 4 MB
g++ lowrank_max_random_00 :heavy_check_mark: AC 2 ms 4 MB
g++ lowrank_max_random_01 :heavy_check_mark: AC 2 ms 4 MB
g++ lowrank_max_random_02 :heavy_check_mark: AC 2 ms 4 MB
g++ lowrank_max_random_03 :heavy_check_mark: AC 698 ms 8 MB
g++ lowrank_max_random_04 :heavy_check_mark: AC 652 ms 8 MB
g++ lowrank_max_random_05 :heavy_check_mark: AC 605 ms 8 MB
g++ lowrank_max_random_06 :heavy_check_mark: AC 173 ms 6 MB
g++ lowrank_max_random_07 :heavy_check_mark: AC 423 ms 7 MB
g++ max_fullrank_00 :heavy_check_mark: AC 677 ms 8 MB
g++ max_fullrank_01 :heavy_check_mark: AC 663 ms 8 MB
g++ max_fullrank_02 :heavy_check_mark: AC 712 ms 8 MB
g++ max_fullrank_03 :heavy_check_mark: AC 712 ms 8 MB
g++ max_random_00 :heavy_check_mark: AC 653 ms 8 MB
g++ max_random_01 :heavy_check_mark: AC 710 ms 8 MB
g++ max_random_02 :heavy_check_mark: AC 651 ms 8 MB
g++ max_random_03 :heavy_check_mark: AC 654 ms 8 MB
g++ perm_max_random_00 :heavy_check_mark: AC 2 ms 4 MB
g++ perm_max_random_01 :heavy_check_mark: AC 2 ms 4 MB
g++ random_00 :heavy_check_mark: AC 9 ms 5 MB
g++ random_01 :heavy_check_mark: AC 2 ms 4 MB
g++ random_02 :heavy_check_mark: AC 2 ms 4 MB
g++ random_03 :heavy_check_mark: AC 364 ms 7 MB
g++ random_fullrank_00 :heavy_check_mark: AC 9 ms 4 MB
g++ random_fullrank_01 :heavy_check_mark: AC 2 ms 4 MB
g++ random_fullrank_02 :heavy_check_mark: AC 2 ms 4 MB
g++ random_fullrank_03 :heavy_check_mark: AC 373 ms 7 MB
g++ small_random_00 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_01 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_02 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_03 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_04 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_05 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_06 :heavy_check_mark: AC 2 ms 4 MB
g++ small_random_07 :heavy_check_mark: AC 2 ms 4 MB
Back to top page