Submission #41708232
Source Code Expand
use std::{cmp::Reverse, collections::BinaryHeap}; use proconio::input; fn main() { input! { h: usize, w: usize, a: [[usize; w]; h], } let inf = 1_usize << 60; let f = |dist: &mut Vec<Vec<usize>>, i: usize, j: usize| { let mut pq = BinaryHeap::new(); pq.push((Reverse(0), (i, j))); dist[i][j] = 0; while let Some((Reverse(d), (i, j))) = pq.pop() { if dist[i][j] < d { continue; } let dir = vec![(-1, 0), (0, -1), (0, 1), (1, 0)]; for (dr, dc) in dir { let (nr, nc) = (i as i64 + dr, j as i64 + dc); if !(0..h as i64).contains(&nr) || !(0..w as i64).contains(&nc) { continue; } let (nr, nc) = (nr as usize, nc as usize); if dist[nr][nc] > dist[i][j] + a[nr][nc] { dist[nr][nc] = dist[i][j] + a[nr][nc]; pq.push((Reverse(dist[nr][nc]), (nr, nc))); } } } }; let mut dist_h1 = vec![vec![inf; w]; h]; f(&mut dist_h1, h - 1, 0); let mut dist_hw = vec![vec![inf; w]; h]; f(&mut dist_hw, h - 1, w - 1); let mut dist_1w = vec![vec![inf; w]; h]; f(&mut dist_1w, 0, w - 1); let mut min = inf; for i in 0..h { for j in 0..w { min = min.min(dist_h1[i][j] + dist_hw[i][j] + dist_1w[i][j] - 2 * a[i][j]); } } let ans = min; println!("{}", ans); }
Submission Info
Submission Time | |
---|---|
Task | J - Leveling |
User | bouzuya |
Language | Rust (1.42.0) |
Score | 6 |
Code Size | 1526 Byte |
Status | AC |
Exec Time | 10 ms |
Memory | 2252 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 6 / 6 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_01.txt, example_02.txt |
All | example_01.txt, example_02.txt, subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_01_18.txt, subtask_01_19.txt, subtask_01_20.txt, subtask_01_21.txt, subtask_01_22.txt, subtask_01_23.txt, subtask_01_24.txt, subtask_01_25.txt, subtask_01_26.txt, subtask_01_27.txt, subtask_01_28.txt, subtask_01_29.txt, subtask_01_30.txt, subtask_01_31.txt, subtask_01_32.txt, subtask_01_33.txt, subtask_01_34.txt, subtask_01_35.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_01.txt | AC | 6 ms | 2128 KiB |
example_02.txt | AC | 1 ms | 2108 KiB |
subtask_01_01.txt | AC | 1 ms | 1992 KiB |
subtask_01_02.txt | AC | 3 ms | 2052 KiB |
subtask_01_03.txt | AC | 1 ms | 2044 KiB |
subtask_01_04.txt | AC | 3 ms | 2140 KiB |
subtask_01_05.txt | AC | 3 ms | 2228 KiB |
subtask_01_06.txt | AC | 3 ms | 2128 KiB |
subtask_01_07.txt | AC | 4 ms | 2216 KiB |
subtask_01_08.txt | AC | 1 ms | 1992 KiB |
subtask_01_09.txt | AC | 1 ms | 2144 KiB |
subtask_01_10.txt | AC | 1 ms | 1964 KiB |
subtask_01_11.txt | AC | 3 ms | 2084 KiB |
subtask_01_12.txt | AC | 3 ms | 2140 KiB |
subtask_01_13.txt | AC | 3 ms | 2176 KiB |
subtask_01_14.txt | AC | 3 ms | 2100 KiB |
subtask_01_15.txt | AC | 3 ms | 2252 KiB |
subtask_01_16.txt | AC | 2 ms | 2128 KiB |
subtask_01_17.txt | AC | 2 ms | 2000 KiB |
subtask_01_18.txt | AC | 2 ms | 2044 KiB |
subtask_01_19.txt | AC | 1 ms | 1972 KiB |
subtask_01_20.txt | AC | 10 ms | 2128 KiB |
subtask_01_21.txt | AC | 3 ms | 2172 KiB |
subtask_01_22.txt | AC | 3 ms | 2068 KiB |
subtask_01_23.txt | AC | 3 ms | 2176 KiB |
subtask_01_24.txt | AC | 1 ms | 1960 KiB |
subtask_01_25.txt | AC | 1 ms | 1896 KiB |
subtask_01_26.txt | AC | 2 ms | 1920 KiB |
subtask_01_27.txt | AC | 2 ms | 2144 KiB |
subtask_01_28.txt | AC | 3 ms | 2152 KiB |
subtask_01_29.txt | AC | 3 ms | 2164 KiB |
subtask_01_30.txt | AC | 6 ms | 2160 KiB |
subtask_01_31.txt | AC | 4 ms | 2164 KiB |
subtask_01_32.txt | AC | 2 ms | 2060 KiB |
subtask_01_33.txt | AC | 2 ms | 2168 KiB |
subtask_01_34.txt | AC | 3 ms | 2100 KiB |
subtask_01_35.txt | AC | 1 ms | 2056 KiB |