Submission #40809593
Source Code Expand
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); }
Submission Info
Submission Time | |
---|---|
Task | H - 1-9 Grid |
User | bouzuya |
Language | Rust (1.42.0) |
Score | 6 |
Code Size | 1296 Byte |
Status | AC |
Exec Time | 36 ms |
Memory | 2988 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 6 / 6 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
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 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
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 |