Skip to main content

library_checker/linear_algebra/
system_of_linear_equations.rs

1use competitive::prelude::*;
2use competitive::{algebra::AddMulOperation, math::Matrix, num::mint_basic::MInt998244353 as M};
3
4#[verify::library_checker("system_of_linear_equations")]
5pub fn system_of_linear_equations(reader: impl Read, writer: impl Write) {
6    prepare_io!(reader, writer);
7    sc!(n, m, a: [[M; m]; n], b: [M; n]);
8    let a = Matrix::<AddMulOperation<M>>::from_vec(a);
9    if let Some(sol) = a.solve_system_of_linear_equations(&b) {
10        pp!(sol.basis.len(); @it2d std::iter::once(sol.particular).chain(sol.basis));
11    } else {
12        pp!(-1);
13    }
14}