結果
問題 | No.2759 Take Pictures, Elements? |
ユーザー |
|
提出日時 | 2024-05-17 22:24:25 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 51 ms / 2,000 ms |
コード長 | 2,339 bytes |
コンパイル時間 | 19,183 ms |
コンパイル使用メモリ | 387,912 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-20 14:24:05 |
合計ジャッジ時間 | 16,397 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#![allow(unused_imports)]#![allow(unused_macros)]#![allow(non_snake_case)]use proconio::marker::{Bytes, Chars, Isize1, Usize1};use proconio::{fastout, input, input_interactive};#[fastout]fn main() {input! {N: usize,Q: usize,A: [i64; N],mut B: [i64; Q],}B.dedup();let B = B;// 座標圧縮let (A, B) = {let mut sorted = A.iter().copied().chain(B.iter().copied()).collect::<Vec<_>>();sorted.sort();sorted.dedup();let mut ret_A = vec![0; N];let mut ret_B = vec![0; B.len()];for i in 0..N {ret_A[i] = sorted.binary_search(&A[i]).unwrap();}for (i, b) in B.into_iter().enumerate() {ret_B[i] = sorted.binary_search(&b).unwrap();}(ret_A, ret_B)};debug!(A, B);let mut dp = vec![usize::MAX; N];dp[0] = 0;let pos_per_b = {let mut ret = vec![vec![]; 2_010];for i in 0..N {ret[A[i] as usize].push(i);}ret};for b in B {let mut new_dp = vec![usize::MAX; N];for from in 0..N {if dp[from] == usize::MAX {continue;}for to in pos_per_b[b as usize].iter() {debug!(from, to, dp[from]);chmin!(new_dp[*to], dp[from] + to.abs_diff(from));}}dp = new_dp;}let ans = dp.iter().min().unwrap();println!("{}", ans);}#[macro_export]macro_rules! mat {($($e:expr),*) => { vec![$($e),*] };($($e:expr,)*) => { vec![$($e),*] };($e:expr; $d:expr) => { vec![$e; $d] };($e:expr; $d:expr $(; $ds:expr)+) => { vec![mat![$e $(; $ds)*]; $d] };}#[macro_export]macro_rules! chmin {($a:expr, $b:expr) => {if $a > $b {$a = $b;true} else {false}};}#[macro_export]macro_rules! chmax {($a:expr, $b:expr) => {if $a < $b {$a = $b;true} else {false}};}/// https://maguro.dev/debug-macro/#[macro_export]macro_rules! debug {($($a:expr),* $(,)*) => {#[cfg(debug_assertions)]eprintln!(concat!($("| ", stringify!($a), "={:?} "),*, "|"), $(&$a),*);};}