Submission #7142843


Source Code Expand

//https://qiita.com/tanakh/items/0ba42c7ca36cd29d0ac8 より
macro_rules! input {
    (source = $s:expr, $($r:tt)*) => {
        let mut iter = $s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
    ($($r:tt)*) => {
        let s = {
            use std::io::Read;
            let mut s = String::new();
            std::io::stdin().read_to_string(&mut s).unwrap();
            s
        };
        let mut iter = s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
}

macro_rules! input_inner {
    ($iter:expr) => {};
    ($iter:expr, ) => {};
    ($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
        let $var = read_value!($iter, $t);
        input_inner!{$iter $($r)*}
    };
}

macro_rules! read_value {
    ($iter:expr, ( $($t:tt),* )) => {
        ( $(read_value!($iter, $t)),* )
    };
    ($iter:expr, [ $t:tt ; $len:expr ]) => {
        (0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()
    };
    ($iter:expr, chars) => {
        read_value!($iter, String).chars().collect::<Vec<char>>()
    };
    ($iter:expr, usize1) => {
        read_value!($iter, usize) - 1
    };
    ($iter:expr, $t:ty) => {
        $iter.next().unwrap().parse::<$t>().expect("Parse error")
    };
}

// ここまで

use std::collections::HashMap;
use std::cmp::max;

fn calc(a: u32, b: u32, c: u32, d: u32, p: &Vec<(u32, u32)>, mut memo: &mut HashMap<(u32, u32, u32, u32), u32>) -> u32 {
    if a > b || c > d {
        return 0;
    }
    if let Some(&v) = memo.get(&(a, b, c, d)) {
        return v;
    }
    let mut ans = 0;
    for &(x, y) in p.iter() {
        if a <= x && x <= b && c <= y && y <= d {
            let mut v = (b - a) + (d - c) + 1;
            v += calc(a    , x - 1, c    , y - 1, &p, &mut memo);
            v += calc(a    , x - 1, y + 1, d    , &p, &mut memo);
            v += calc(x + 1, b    , c    , y - 1, &p, &mut memo);
            v += calc(x + 1, b    , y + 1, d    , &p, &mut memo);
            ans = max(ans, v);
        }
    }
    memo.insert((a, b, c, d), ans);
    ans
}

fn run() {
    input! {
        w: u32,
        h: u32,
        n: usize,
        p: [(u32, u32); n],
    }
    let mut memo = HashMap::new();
    let ans = calc(1, w, 1, h, &p, &mut memo);
    println!("{}", ans);
}

fn main() {
    run();
}

Submission Info

Submission Time
Task D - 金塊ゲーム
User sansen
Language Rust (1.15.1)
Score 100
Code Size 2372 Byte
Status AC
Exec Time 10 ms
Memory 4352 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 80 / 80 19 / 19 1 / 1
Status
AC × 3
AC × 25
AC × 50
AC × 75
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt
Subtask2 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt
Subtask3 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt, subtask3_11.txt, subtask3_12.txt, subtask3_13.txt, subtask3_14.txt, subtask3_15.txt, subtask3_16.txt, subtask3_17.txt, subtask3_18.txt, subtask3_19.txt, subtask3_20.txt, subtask3_21.txt, subtask3_22.txt, subtask3_23.txt, subtask3_24.txt, subtask3_25.txt
Case Name Status Exec Time Memory
sample_01.txt AC 2 ms 4352 KB
sample_02.txt AC 2 ms 4352 KB
sample_03.txt AC 2 ms 4352 KB
subtask1_01.txt AC 2 ms 4352 KB
subtask1_02.txt AC 2 ms 4352 KB
subtask1_03.txt AC 2 ms 4352 KB
subtask1_04.txt AC 2 ms 4352 KB
subtask1_05.txt AC 2 ms 4352 KB
subtask1_06.txt AC 2 ms 4352 KB
subtask1_07.txt AC 2 ms 4352 KB
subtask1_08.txt AC 2 ms 4352 KB
subtask1_09.txt AC 2 ms 4352 KB
subtask1_10.txt AC 2 ms 4352 KB
subtask1_11.txt AC 2 ms 4352 KB
subtask1_12.txt AC 2 ms 4352 KB
subtask1_13.txt AC 2 ms 4352 KB
subtask1_14.txt AC 2 ms 4352 KB
subtask1_15.txt AC 2 ms 4352 KB
subtask1_16.txt AC 2 ms 4352 KB
subtask1_17.txt AC 2 ms 4352 KB
subtask1_18.txt AC 2 ms 4352 KB
subtask1_19.txt AC 2 ms 4352 KB
subtask1_20.txt AC 2 ms 4352 KB
subtask1_21.txt AC 2 ms 4352 KB
subtask1_22.txt AC 2 ms 4352 KB
subtask1_23.txt AC 2 ms 4352 KB
subtask1_24.txt AC 2 ms 4352 KB
subtask1_25.txt AC 2 ms 4352 KB
subtask2_01.txt AC 2 ms 4352 KB
subtask2_02.txt AC 2 ms 4352 KB
subtask2_03.txt AC 3 ms 4352 KB
subtask2_04.txt AC 3 ms 4352 KB
subtask2_05.txt AC 5 ms 4352 KB
subtask2_06.txt AC 5 ms 4352 KB
subtask2_07.txt AC 5 ms 4352 KB
subtask2_08.txt AC 5 ms 4352 KB
subtask2_09.txt AC 9 ms 4352 KB
subtask2_10.txt AC 9 ms 4352 KB
subtask2_11.txt AC 8 ms 4352 KB
subtask2_12.txt AC 9 ms 4352 KB
subtask2_13.txt AC 6 ms 4352 KB
subtask2_14.txt AC 5 ms 4352 KB
subtask2_15.txt AC 2 ms 4352 KB
subtask2_16.txt AC 5 ms 4352 KB
subtask2_17.txt AC 8 ms 4352 KB
subtask2_18.txt AC 9 ms 4352 KB
subtask2_19.txt AC 8 ms 4352 KB
subtask2_20.txt AC 9 ms 4352 KB
subtask2_21.txt AC 9 ms 4352 KB
subtask2_22.txt AC 9 ms 4352 KB
subtask2_23.txt AC 9 ms 4352 KB
subtask2_24.txt AC 9 ms 4352 KB
subtask2_25.txt AC 9 ms 4352 KB
subtask3_01.txt AC 2 ms 4352 KB
subtask3_02.txt AC 2 ms 4352 KB
subtask3_03.txt AC 2 ms 4352 KB
subtask3_04.txt AC 3 ms 4352 KB
subtask3_05.txt AC 4 ms 4352 KB
subtask3_06.txt AC 4 ms 4352 KB
subtask3_07.txt AC 3 ms 4352 KB
subtask3_08.txt AC 5 ms 4352 KB
subtask3_09.txt AC 6 ms 4352 KB
subtask3_10.txt AC 9 ms 4352 KB
subtask3_11.txt AC 9 ms 4352 KB
subtask3_12.txt AC 10 ms 4352 KB
subtask3_13.txt AC 10 ms 4352 KB
subtask3_14.txt AC 9 ms 4352 KB
subtask3_15.txt AC 9 ms 4352 KB
subtask3_16.txt AC 8 ms 4352 KB
subtask3_17.txt AC 9 ms 4352 KB
subtask3_18.txt AC 5 ms 4352 KB
subtask3_19.txt AC 9 ms 4352 KB
subtask3_20.txt AC 5 ms 4352 KB
subtask3_21.txt AC 10 ms 4352 KB
subtask3_22.txt AC 10 ms 4352 KB
subtask3_23.txt AC 9 ms 4352 KB
subtask3_24.txt AC 9 ms 4352 KB
subtask3_25.txt AC 9 ms 4352 KB