Submission #8876164


Source Code Expand

// Practice AtCoder
// author: Leonardone @ NEETSDKASU

// PDF解説読後

fn main() {
    let mut stdin = String::new();
    std::io::Read::read_to_string(&mut std::io::stdin(), &mut stdin).unwrap();
    let mut stdin = stdin.split_whitespace();
    let mut get = || stdin.next().unwrap();
    macro_rules! get {
        ($t:ty) => (get().parse::<$t>().unwrap());
        () => (get!(i64));
    }
    
    let h = get!(usize);
    let w = get!(usize);
    let mut ab = vec![vec![0; w]; h];
    for i in 0..2 {
        for y in 0..h {
            for x in 0..w {
                ab[y][x] += get!();
                ab[y][x] = -ab[y][x];
            }
        }
    }
    let size = 160 * (w + h) + 1;
    let mut dp = vec![vec![vec![false; size]; w]; 2];
    dp[0][0][ab[0][0].abs() as usize] = true;
    for i in 1..w {
        for j in 0..size {
            if dp[0][i - 1][j] {
                let k = j as i64 + ab[0][i];
                dp[0][i][k.abs() as usize] = true;
                let k = j as i64 - ab[0][i];
                dp[0][i][k.abs() as usize] = true;
            }
        }
    }
    for y in 1..h {
        let p = y & 1;
        for i in 0..w {
            for e in dp[p][i].iter_mut() {
                *e = false;
            }
        }
        for j in 0..size {
            if dp[1 - p][0][j] {
                let k = j as i64 + ab[y][0];
                dp[p][0][k.abs() as usize] = true;
                let k = j as i64 - ab[y][0];
                dp[p][0][k.abs() as usize] = true;
            }
        }
        for i in 1..w {
            for j in 0..size {
                if dp[p][i - 1][j] || dp[1 - p][i][j] {
                    let k = j as i64 + ab[y][i];
                    dp[p][i][k.abs() as usize] = true;
                    let k = j as i64 - ab[y][i];
                    dp[p][i][k.abs() as usize] = true;
                }
            }
        }
    }
    let p = (h - 1) & 1;
    for j in 0..size {
        if dp[p][w - 1][j] {
            println!("{}", j);
            break;
        }
    }
}

Submission Info

Submission Time
Task E - Balanced Path
User neetsdkasu
Language Rust (1.15.1)
Score 500
Code Size 2127 Byte
Status AC
Exec Time 492 ms
Memory 8444 KiB

Compile Error

warning: unused variable: `i`, #[warn(unused_variables)] on by default
  --> ./Main.rs:19:9
   |
19 |     for i in 0..2 {
   |         ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 25
Set Name Test Cases
Sample sample_01, sample_02
All hand_01, hand_02, hand_03, hand_04, hand_05, hand_06, max_01, max_02, max_03, max_04, max_05, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_11, random_12, sample_01, sample_02
Case Name Status Exec Time Memory
hand_01 AC 433 ms 8444 KiB
hand_02 AC 433 ms 8444 KiB
hand_03 AC 432 ms 8444 KiB
hand_04 AC 433 ms 8444 KiB
hand_05 AC 433 ms 8444 KiB
hand_06 AC 432 ms 8444 KiB
max_01 AC 473 ms 8444 KiB
max_02 AC 428 ms 8444 KiB
max_03 AC 420 ms 8444 KiB
max_04 AC 433 ms 8444 KiB
max_05 AC 435 ms 8444 KiB
random_01 AC 169 ms 6396 KiB
random_02 AC 164 ms 6396 KiB
random_03 AC 211 ms 6396 KiB
random_04 AC 181 ms 6396 KiB
random_05 AC 85 ms 4352 KiB
random_06 AC 492 ms 8444 KiB
random_07 AC 485 ms 8444 KiB
random_08 AC 485 ms 8444 KiB
random_09 AC 485 ms 8444 KiB
random_10 AC 484 ms 8444 KiB
random_11 AC 452 ms 8444 KiB
random_12 AC 455 ms 8444 KiB
sample_01 AC 2 ms 4352 KiB
sample_02 AC 2 ms 4352 KiB