結果
| 問題 | No.3679 なんかでっかい虫リターンズ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-18 17:13:02 |
| 言語 | Rust (1.99.0 + proconio + num + itertools + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 2 ms / 2,000 ms |
| + 8µs | |
| コード長 | 1,266 bytes |
| 記録 | |
| コンパイル時間 | 941 ms |
| コンパイル使用メモリ | 169,588 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-10-18 17:13:15 |
| 合計ジャッジ時間 | 2,915 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
ソースコード
use std::collections::VecDeque;
use proconio::input;
fn main() {
input! {
h: usize,
w: usize,
a: usize,
b: usize,
r1: usize,
c1: usize,
r2: usize,
c2: usize,
p: usize,
q: usize,
}
let mut dist = [
vec![vec![u32::MAX; w + 1]; h + 1],
vec![vec![u32::MAX; w + 1]; h + 1],
];
let mut queue = VecDeque::from([(0, a, b)]);
dist[0][a][b] = 0;
if (r1..=r2).contains(&a) && (c1..=c2).contains(&b) {
dist[1][a][b] = 0;
queue.push_back((1, a, b));
}
while let Some((t, i, j)) = queue.pop_front() {
let d = dist[t][i][j] + 1;
for (ni, nj) in [(i - 1, j), (i + 1, j), (i, j - 1), (i, j + 1)] {
let mut nt = t;
if (1..=h).contains(&ni) && (1..=w).contains(&nj) {
if (r1..=r2).contains(&ni) && (c1..=c2).contains(&nj) {
nt = 1;
}
if dist[nt][ni][nj] != u32::MAX {
continue;
}
dist[nt][ni][nj] = d;
queue.push_back((nt, ni, nj));
}
}
}
let ans = dist[1][p][q] + (p.abs_diff(a) + q.abs_diff(b)) as u32;
println!("{ans}");
}