1
use std::collections::HashMap;4
pub fn execute_instructions(n: i32, start_pos: Vec<i32>, s: String) -> Vec<i32> {5
let mut row_map: HashMap<i32, Vec<i32>> = HashMap::new();6
let mut col_map: HashMap<i32, Vec<i32>> = HashMap::new();7
row_map.insert(0, vec![0]);8
col_map.insert(0, vec![0]);11
let mut ans = vec![i32::MIN; s.len()];12
for i in 0..=s.len() {13
let v = if i == s.len() {16
.chain(col_map.drain())20
match s.as_bytes()[i] {24
.remove(&(x + start_pos[0] + 1))25
.unwrap_or(Vec::new())30
.remove(&(x + start_pos[0] - n))31
.unwrap_or(Vec::new())36
.remove(&(y + start_pos[1] + 1))37
.unwrap_or(Vec::new())42
.remove(&(y + start_pos[1] - n))43
.unwrap_or(Vec::new())49
row_map.entry(x).or_insert(Vec::new()).push(i as i32 + 1);50
col_map.entry(y).or_insert(Vec::new()).push(i as i32 + 1);52
for j in v.into_iter() {53
if ans[j as usize] == i32::MIN {54
ans[j as usize] = i as i32 - j;