提出 #40809593
ソースコード 拡げる
use im_rc::HashMap;
use proconio::{input, marker::Chars};
fn main() {
input! {
n: usize,
m: usize,
a: [Chars; n],
}
let mut pos = vec![vec![]; 10 + 1];
for i in 0..n {
for j in 0..m {
match a[i][j] {
'S' => pos[0].push((i, j)),
'G' => pos[10].push((i, j)),
'1'..='9' => pos[(a[i][j] as u8 - b'0') as usize].push((i, j)),
_ => unreachable!(),
}
}
}
let dist = |p: (usize, usize), q: (usize, usize)| -> i64 {
(p.0 as i64 - q.0 as i64).abs() + (p.1 as i64 - q.1 as i64).abs()
};
let mut dp = vec![HashMap::new(); 10 + 1];
dp[0].insert(pos[0][0], 0);
for i in 0..10 {
let keys = dp[i].keys().cloned().collect::<Vec<_>>();
for p in keys {
let d_p = *dp[i].get(&p).unwrap();
for q in pos[i + 1].iter().copied() {
let d_q = d_p + dist(q, p);
let entry = dp[i + 1].entry(q).or_insert(d_q);
if *entry > d_q {
*entry = d_q;
}
}
}
}
if dp[10].is_empty() {
println!("-1");
return;
}
let ans = dp[10].iter().next().unwrap().1;
println!("{}", ans);
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | H - 1-9 Grid |
| ユーザ | bouzuya |
| 言語 | Rust (1.42.0) |
| 得点 | 6 |
| コード長 | 1296 Byte |
| 結果 | AC |
| 実行時間 | 36 ms |
| メモリ | 2988 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 6 / 6 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | s1.txt, s2.txt, s3.txt |
| All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, s1.txt, s2.txt, s3.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 01.txt | AC | 6 ms | 2168 KiB |
| 02.txt | AC | 1 ms | 2044 KiB |
| 03.txt | AC | 2 ms | 2196 KiB |
| 04.txt | AC | 1 ms | 1988 KiB |
| 05.txt | AC | 2 ms | 2164 KiB |
| 06.txt | AC | 2 ms | 2212 KiB |
| 07.txt | AC | 1 ms | 2164 KiB |
| 08.txt | AC | 1 ms | 1944 KiB |
| 09.txt | AC | 1 ms | 2172 KiB |
| 10.txt | AC | 1 ms | 2060 KiB |
| 11.txt | AC | 23 ms | 2620 KiB |
| 12.txt | AC | 33 ms | 2744 KiB |
| 13.txt | AC | 27 ms | 2488 KiB |
| 14.txt | AC | 29 ms | 2440 KiB |
| 15.txt | AC | 36 ms | 2624 KiB |
| 16.txt | AC | 26 ms | 2628 KiB |
| 17.txt | AC | 26 ms | 2408 KiB |
| 18.txt | AC | 31 ms | 2484 KiB |
| 19.txt | AC | 35 ms | 2752 KiB |
| 20.txt | AC | 21 ms | 2648 KiB |
| 21.txt | AC | 4 ms | 2128 KiB |
| 22.txt | AC | 1 ms | 2108 KiB |
| 23.txt | AC | 1 ms | 2056 KiB |
| 24.txt | AC | 1 ms | 1948 KiB |
| 25.txt | AC | 1 ms | 2052 KiB |
| 26.txt | AC | 3 ms | 2116 KiB |
| 27.txt | AC | 1 ms | 2076 KiB |
| 28.txt | AC | 2 ms | 2056 KiB |
| 29.txt | AC | 1 ms | 2020 KiB |
| 30.txt | AC | 10 ms | 2148 KiB |
| 31.txt | AC | 3 ms | 2988 KiB |
| 32.txt | AC | 5 ms | 2696 KiB |
| 33.txt | AC | 5 ms | 2700 KiB |
| 34.txt | AC | 5 ms | 2628 KiB |
| 35.txt | AC | 8 ms | 2728 KiB |
| 36.txt | AC | 4 ms | 2884 KiB |
| s1.txt | AC | 2 ms | 2048 KiB |
| s2.txt | AC | 2 ms | 2092 KiB |
| s3.txt | AC | 2 ms | 1900 KiB |