Task: | Sokkelo |
Sender: | xnor |
Submission time: | 2022-01-22 14:49:16 +0200 |
Language: | Rust |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | RUNTIME ERROR | 0 |
#2 | RUNTIME ERROR | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#2 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#3 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#4 | RUNTIME ERROR | 0.01 s | 2 | details |
#5 | RUNTIME ERROR | 0.01 s | 2 | details |
#6 | RUNTIME ERROR | 0.01 s | 2 | details |
#7 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#8 | RUNTIME ERROR | 0.01 s | 2 | details |
#9 | RUNTIME ERROR | 0.01 s | 2 | details |
#10 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#11 | RUNTIME ERROR | 0.01 s | 2 | details |
#12 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#13 | RUNTIME ERROR | 0.01 s | 2 | details |
#14 | RUNTIME ERROR | 0.01 s | 1, 2 | details |
#15 | RUNTIME ERROR | 0.01 s | 2 | details |
#16 | RUNTIME ERROR | 0.01 s | 2 | details |
#17 | RUNTIME ERROR | 0.01 s | 2 | details |
Compiler report
warning: unreachable statement --> input/code.rs:20:5 | 19 | return; | ------ any code following this expression is unreachable 20 | println!("{}", get_dist(maze, n, m)); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement | = note: `#[warn(unreachable_code)]` on by default = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) warning: unreachable expression --> input/code.rs:125:5 | 123 | return Vec::new(); | ----------------- any code following this expression is unreachable 124 | 125 | / loop { 126 | | let mut new_neighbors_a = HashSet::new(); 127 | | let mut new_neighbors_b = HashSet::new(); 128 | | ... | 168 | | neighbors_b = new_neighbors_b; 169 | | } | |_____^ unreachable expression warning: unused variable: `maze` --> input/code.rs:18:9 | 18 | let maze = fill_maze(n, m); | ^^^^ help: if this is intentional,...
Code
use std::{collections::HashSet,io::{stdin, BufRead, BufReader},};fn main() {let mut stdin = BufReader::new(stdin());let mut cur_line = String::new();stdin.read_line(&mut cur_line).unwrap();let mut nums = cur_line.split_whitespace().map(|s| s.parse::<usize>().unwrap());let n = nums.next().unwrap();let m = nums.next().unwrap();let maze = fill_maze(n, m);return;println!("{}", get_dist(maze, n, m));}fn get_dist(mut maze: Vec<Vec<u8>>, n: usize, m: usize) -> usize {let mut neighbors_a = HashSet::new();for y in 1..n - 1 {for x in 1..m - 1 {if maze[y][x] == b'A' {if y - 1 > 0 && maze[y - 1][x] != b'A' {neighbors_a.insert((x, y - 1));}if y + 1 < n - 1 && maze[y + 1][x] != b'A' {neighbors_a.insert((x, y + 1));}if x - 1 > 0 && maze[y][x - 1] != b'A' {neighbors_a.insert((x - 1, y));}if x + 1 < m - 1 && maze[y][x + 1] != b'A' {neighbors_a.insert((x + 1, y));}}}}for c in 1.. {let mut new_neighbors = HashSet::new();for &(x, y) in &neighbors_a {if maze[y][x] == b'B' {return c;}maze[y][x] = b'A';if y - 1 > 0 && maze[y - 1][x] != b'A' {new_neighbors.insert((x, y - 1));}if y + 1 < n - 1 && maze[y + 1][x] != b'A' {new_neighbors.insert((x, y + 1));}if x - 1 > 0 && maze[y][x - 1] != b'A' {new_neighbors.insert((x - 1, y));}if x + 1 < m - 1 && maze[y][x + 1] != b'A' {new_neighbors.insert((x + 1, y));}}neighbors_a = new_neighbors;}0}fn fill_maze(n: usize, m: usize) -> Vec<Vec<u8>> {let mut stdin = BufReader::new(stdin());let mut maze = Vec::with_capacity(n);for _ in 0..n {let mut cur_line = String::new();stdin.read_line(&mut cur_line).unwrap();maze.push(cur_line.into_bytes());}let mut neighbors_a = HashSet::new();let mut neighbors_b = HashSet::new();for y in 1..n - 1 {for x in 1..m - 1 {if maze[y][x] == b'A' {if maze[y - 1][x] == b'.' {neighbors_a.insert((x, y - 1));}if maze[y + 1][x] == b'.' {neighbors_a.insert((x, y + 1));}if maze[y][x - 1] == b'.' {neighbors_a.insert((x - 1, y));}if maze[y][x + 1] == b'.' {neighbors_a.insert((x + 1, y));}}if maze[y][x] == b'B' {if maze[y - 1][x] == b'.' {neighbors_b.insert((x, y - 1));}if maze[y + 1][x] == b'.' {neighbors_b.insert((x, y + 1));}if maze[y][x - 1] == b'.' {neighbors_b.insert((x - 1, y));}if maze[y][x + 1] == b'.' {neighbors_b.insert((x + 1, y));}}}}return Vec::new();loop {let mut new_neighbors_a = HashSet::new();let mut new_neighbors_b = HashSet::new();for &(x, y) in &neighbors_a {// maze[y][x] = b'A';if y > 0 && maze[y - 1][x] == b'.' && !neighbors_a.contains(&(x, y - 1)) {// new_neighbors_a.insert((x, y - 1));}if y < n - 1 && maze[y + 1][x] == b'.' && !neighbors_a.contains(&(x, y + 1)) {// new_neighbors_a.insert((x, y + 1));}if x > 0 && maze[y][x - 1] == b'.' && !neighbors_a.contains(&(x - 1, y)) {// new_neighbors_a.insert((x - 1, y));}if x < m - 1 && maze[y][x + 1] == b'.' && !neighbors_a.contains(&(x + 1, y)) {// new_neighbors_a.insert((x + 1, y));}}// for &(x, y) in &neighbors_b {// maze[y][x] = b'B';// if maze[y - 1][x] == b'.' && !neighbors_b.contains(&(x, y - 1)) {// new_neighbors_b.insert((x, y - 1));// }// if maze[y + 1][x] == b'.' && !neighbors_b.contains(&(x, y + 1)) {// new_neighbors_b.insert((x, y + 1));// }// if maze[y][x - 1] == b'.' && !neighbors_b.contains(&(x - 1, y)) {// new_neighbors_b.insert((x - 1, y));// }// if maze[y][x + 1] == b'.' && !neighbors_b.contains(&(x + 1, y)) {// new_neighbors_b.insert((x + 1, y));// }// }if new_neighbors_a.is_empty() && new_neighbors_b.is_empty() {break maze;}neighbors_a = new_neighbors_a;neighbors_b = new_neighbors_b;}}
Test details
Test 1
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### #A.................# #..................# #..................# ... |
correct output |
---|
1 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 2
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### #A.................# #..................# #..................# ... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 3
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### #A.................# #..................# #..................# ... |
correct output |
---|
9 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 4
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
1 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 5
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 6
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
335 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 7
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### #####.############## ###.....############ ##.......########### ... |
correct output |
---|
10 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 8
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
436 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 9
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 10
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### #B................## #################.## #################.## ... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 11
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 12
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### ##########A######### ##########.######### ##########.######### ... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 13
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
2 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 14
Group: 1, 2
Verdict: RUNTIME ERROR
input |
---|
20 20 #################### ##########A######### ##########.######### ##########.######### ... |
correct output |
---|
12 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 15
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 1000 ##############################... |
correct output |
---|
502 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 16
Group: 2
Verdict: RUNTIME ERROR
input |
---|
3 1000 ##############################... |
correct output |
---|
1 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...
Test 17
Group: 2
Verdict: RUNTIME ERROR
input |
---|
1000 3 ### #A# #.# #.# ... |
correct output |
---|
1 |
user output |
---|
(empty) |
Error:
thread 'main' panicked at 'index out of bounds: the len is 0 but the index is 1', input/co...