Submission #50231044


Source Code Expand

use std::collections::HashMap;

use proconio::input;

fn dfs(memo: &mut HashMap<usize, usize>, x: usize) -> usize {
    if x == 0 || x == 1 {
        return 0;
    }
    if let Some(&v) = memo.get(&x) {
        return v;
    }
    let v = x + dfs(memo, x / 2) + dfs(memo, (x + 1) / 2);
    memo.insert(x, v);
    v
}

fn main() {
    input! {
        n: usize,
    };
    let ans = dfs(&mut HashMap::new(), n);
    println!("{}", ans);
}

Submission Info

Submission Time
Task C - Divide and Divide
User bouzuya
Language Rust (rustc 1.70.0)
Score 300
Code Size 438 Byte
Status AC
Exec Time 1 ms
Memory 2088 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 11
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 02_corner_00.txt, 02_corner_01.txt, 03_min_00.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 2084 KiB
00_sample_01.txt AC 1 ms 1996 KiB
00_sample_02.txt AC 0 ms 2064 KiB
01_random_00.txt AC 0 ms 1968 KiB
01_random_01.txt AC 1 ms 2088 KiB
01_random_02.txt AC 1 ms 1872 KiB
01_random_03.txt AC 0 ms 1932 KiB
01_random_04.txt AC 1 ms 1792 KiB
02_corner_00.txt AC 0 ms 2084 KiB
02_corner_01.txt AC 0 ms 1868 KiB
03_min_00.txt AC 1 ms 1916 KiB