pub use __cargo_equip::prelude::*; use chminmax::chmin; use mvec::mvec; #[allow(unused_imports)] use proconio::{ input, marker::{Bytes, Chars, Usize1}, }; const INF: usize = 1 << 60; fn main() { input! { n: usize, m: usize, a: [usize; n], b: [usize; m], } let f = |a| { let mut c = vec![]; for &x in &a { c.push(0); c.extend(vec![1; x]); } c }; let a = f(a); let b = f(b); let n = a.len(); let m = b.len(); let mut dp = mvec![INF; n + 1; m + 1]; dp[0][0] = 0; for i in 0..=n { for j in 0..=m { if i < n { chmin!(dp[i + 1][j], dp[i][j] + 1); } if j < m { chmin!(dp[i][j + 1], dp[i][j] + 1); } if i < n && j < m { chmin!( dp[i + 1][j + 1], dp[i][j] + if a[i] == b[j] { 0 } else { 1 } ); } } } println!("{}", dp[n][m]); } // The following code was expanded by `cargo-equip`. /// # Bundled libraries /// /// - `chminmax 0.1.0 (path+████████████████████████████████████████████████████)` published in **missing** licensed under `CC0-1.0` as `crate::__cargo_equip::crates::chminmax` /// - `mvec 0.1.0 (path+████████████████████████████████████████████████)` published in **missing** licensed under `CC0-1.0` as `crate::__cargo_equip::crates::mvec` #[cfg_attr(any(), rustfmt::skip)] #[allow(unused)] mod __cargo_equip { pub(crate) mod crates { pub mod chminmax {pub use crate::__cargo_equip::macros::chminmax::*;#[macro_export]macro_rules!__cargo_equip_macro_def_chminmax_min{($a:expr$(,)*)=>{{$a}};($a:expr,$b:expr$(,)*)=>{{std::cmp::min($a,$b)}};($a:expr,$($rest:expr),+$(,)*)=>{{std::cmp::min($a,$crate::__cargo_equip::crates::chminmax::min!($($rest),+))}};}macro_rules!min{($($tt:tt)*)=>(crate::__cargo_equip_macro_def_chminmax_min!{$($tt)*})}#[macro_export]macro_rules!__cargo_equip_macro_def_chminmax_max{($a:expr$(,)*)=>{{$a}};($a:expr,$b:expr$(,)*)=>{{std::cmp::max($a,$b)}};($a:expr,$($rest:expr),+$(,)*)=>{{std::cmp::max($a,$crate::__cargo_equip::crates::chminmax::max!($($rest),+))}};}macro_rules!max{($($tt:tt)*)=>(crate::__cargo_equip_macro_def_chminmax_max!{$($tt)*})}#[macro_export]macro_rules!__cargo_equip_macro_def_chminmax_chmin{($base:expr,$($cmps:expr),+$(,)*)=>{{let cmp_min=$crate::__cargo_equip::crates::chminmax::min!($($cmps),+);if$base>cmp_min{$base=cmp_min;true}else{false}}};}macro_rules!chmin{($($tt:tt)*)=>(crate::__cargo_equip_macro_def_chminmax_chmin!{$($tt)*})}#[macro_export]macro_rules!__cargo_equip_macro_def_chminmax_chmax{($base:expr,$($cmps:expr),+$(,)*)=>{{let cmp_max=$crate::__cargo_equip::crates::chminmax::max!($($cmps),+);if$base(crate::__cargo_equip_macro_def_chminmax_chmax!{$($tt)*})}} pub mod mvec {pub use crate::__cargo_equip::macros::mvec::*;#[macro_export]macro_rules!__cargo_equip_macro_def_mvec_mvec{($x:expr;$n:expr)=>{vec![$x;$n]};($x:expr;$n:expr$(;$m:expr)+)=>{vec![mvec![$x$(;$m)*];$n]};}macro_rules!mvec{($($tt:tt)*)=>(crate::__cargo_equip_macro_def_mvec_mvec!{$($tt)*})}} } pub(crate) mod macros { pub mod chminmax {pub use crate::{__cargo_equip_macro_def_chminmax_chmax as chmax,__cargo_equip_macro_def_chminmax_chmin as chmin,__cargo_equip_macro_def_chminmax_max as max,__cargo_equip_macro_def_chminmax_min as min};} pub mod mvec {pub use crate::__cargo_equip_macro_def_mvec_mvec as mvec;} } pub(crate) mod prelude {pub use crate::__cargo_equip::crates::*;} mod preludes { pub mod chminmax {} pub mod mvec {} } }