提出 #30717048
ソースコード 拡げる
#[derive(Debug, Copy, Clone)]
enum Dir {
S,
R,
}
const RU: (i32, i32) = (1, 1);
const LU: (i32, i32) = (-1, 1);
const RB: (i32, i32) = (1, -1);
const LB: (i32, i32) = (-1, -1);
fn main() {
let n: usize = read();
let (ax, ay): (usize, usize) = (read::<usize>() - 1, read::<usize>() - 1);
let (bx, by): (usize, usize) = (read::<usize>() - 1, read::<usize>() - 1);
let mut field = vec![vec!['x'; n]; n];
let mut dists = vec![vec![std::i32::MAX; n]; n];
for i in 0..n {
let s: String = read::<String>();
field[i] = s.chars().collect();
}
let bounded_by_n = |x| -> bool { 0 <= x && x < (n as i32) };
let mut deque = VecDeque::new();
dists[ax][ay] = 0;
deque.push_back(((ax, ay), (0, 0), 0));
while let Some((p, dir, d)) = deque.pop_front() {
for &(dx, dy) in &[RU, RB, LU, LB] {
let nx = p.0 as i32 + dx;
let ny = p.1 as i32 + dy;
if bounded_by_n(nx) && bounded_by_n(ny) {
let nx = (p.0 as i32 + dx) as usize;
let ny = (p.1 as i32 + dy) as usize;
if field[nx][ny] == '#' {
continue;
}
if dir == (dx, dy) && d < dists[nx][ny] {
deque.push_front(((nx, ny), dir, d));
dists[nx][ny] = d;
} else if d + 1 < dists[nx][ny] {
deque.push_back(((nx, ny), (dx, dy), d + 1));
dists[nx][ny] = d + 1;
};
}
}
}
let res = if dists[bx][by] == std::i32::MAX {
-1
} else {
dists[bx][by]
};
println!("{}", res);
}
// =========
#[allow(unused_imports)]
use std::cmp::{max, min};
use std::collections::VecDeque;
#[allow(unused_imports)]
use std::collections::{HashMap, HashSet};
#[allow(unused_imports)]
use std::process::exit;
#[allow(dead_code)]
const MOD: usize = 1000000007;
#[allow(dead_code)]
const INF: usize = std::usize::MAX / 2;
fn read<T: std::str::FromStr>() -> T {
use std::io::Read;
let stdin = std::io::stdin();
let stdin = stdin.lock();
let token: String = stdin
.bytes()
.map(|c| c.expect("failed to read char") as char)
.skip_while(|c| c.is_whitespace())
.take_while(|c| !c.is_whitespace())
.collect();
token.parse().ok().expect("failed to parse token")
}
// =========
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Bishop 2 |
| ユーザ | khei4 |
| 言語 | Rust (1.42.0) |
| 得点 | 0 |
| コード長 | 2495 Byte |
| 結果 | WA |
| 実行時間 | 170 ms |
| メモリ | 54864 KiB |
コンパイルエラー
warning: variant is never constructed: `S` --> src/main.rs:3:5 | 3 | S, | ^ | = note: `#[warn(dead_code)]` on by default warning: variant is never constructed: `R` --> src/main.rs:4:5 | 4 | R, | ^
ジャッジ結果
| セット名 | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 0 / 500 | ||||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample_01.txt | AC | 7 ms | 2060 KiB |
| sample_02.txt | AC | 2 ms | 2092 KiB |
| sample_03.txt | AC | 2 ms | 2056 KiB |
| test_01.txt | AC | 2 ms | 2080 KiB |
| test_02.txt | AC | 2 ms | 1960 KiB |
| test_03.txt | AC | 1 ms | 2092 KiB |
| test_04.txt | AC | 2 ms | 2080 KiB |
| test_05.txt | AC | 2 ms | 2012 KiB |
| test_06.txt | AC | 89 ms | 17556 KiB |
| test_07.txt | WA | 62 ms | 11872 KiB |
| test_08.txt | AC | 22 ms | 4012 KiB |
| test_09.txt | AC | 3 ms | 2176 KiB |
| test_10.txt | AC | 11 ms | 2944 KiB |
| test_11.txt | WA | 140 ms | 43332 KiB |
| test_12.txt | WA | 46 ms | 8620 KiB |
| test_13.txt | WA | 4 ms | 2244 KiB |
| test_14.txt | AC | 5 ms | 2516 KiB |
| test_15.txt | AC | 6 ms | 3552 KiB |
| test_16.txt | AC | 3 ms | 2080 KiB |
| test_17.txt | WA | 35 ms | 6872 KiB |
| test_18.txt | AC | 35 ms | 6760 KiB |
| test_19.txt | AC | 2 ms | 2004 KiB |
| test_20.txt | AC | 36 ms | 11408 KiB |
| test_21.txt | AC | 9 ms | 3308 KiB |
| test_22.txt | AC | 52 ms | 10292 KiB |
| test_23.txt | AC | 11 ms | 3324 KiB |
| test_24.txt | AC | 8 ms | 3556 KiB |
| test_25.txt | AC | 6 ms | 2792 KiB |
| test_26.txt | AC | 100 ms | 22916 KiB |
| test_27.txt | WA | 92 ms | 16680 KiB |
| test_28.txt | AC | 11 ms | 3092 KiB |
| test_29.txt | AC | 46 ms | 15944 KiB |
| test_30.txt | AC | 56 ms | 19640 KiB |
| test_31.txt | WA | 125 ms | 28028 KiB |
| test_32.txt | AC | 114 ms | 20680 KiB |
| test_33.txt | AC | 110 ms | 19952 KiB |
| test_34.txt | AC | 68 ms | 19708 KiB |
| test_35.txt | AC | 55 ms | 19648 KiB |
| test_36.txt | AC | 113 ms | 21684 KiB |
| test_37.txt | WA | 120 ms | 21696 KiB |
| test_38.txt | AC | 108 ms | 19988 KiB |
| test_39.txt | AC | 56 ms | 19544 KiB |
| test_40.txt | AC | 55 ms | 19552 KiB |
| test_41.txt | AC | 110 ms | 21748 KiB |
| test_42.txt | AC | 114 ms | 21748 KiB |
| test_43.txt | WA | 108 ms | 20008 KiB |
| test_44.txt | AC | 56 ms | 19652 KiB |
| test_45.txt | AC | 151 ms | 49404 KiB |
| test_46.txt | WA | 144 ms | 36308 KiB |
| test_47.txt | AC | 151 ms | 49208 KiB |
| test_48.txt | AC | 157 ms | 49448 KiB |
| test_49.txt | AC | 149 ms | 49244 KiB |
| test_50.txt | AC | 168 ms | 54780 KiB |
| test_51.txt | AC | 166 ms | 54824 KiB |
| test_52.txt | AC | 165 ms | 52660 KiB |
| test_53.txt | AC | 164 ms | 54632 KiB |
| test_54.txt | AC | 170 ms | 54864 KiB |
| test_55.txt | AC | 168 ms | 54768 KiB |
| test_56.txt | AC | 165 ms | 54720 KiB |
| test_57.txt | AC | 69 ms | 19680 KiB |