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}