Submission #53917444


Source Code Expand

use proconio::input;

trait Bound<T> {
    fn lower_bound(&self, x: &T) -> usize;
    fn upper_bound(&self, x: &T) -> usize;
}

impl<T: PartialOrd> Bound<T> for [T] {
    fn lower_bound(&self, x: &T) -> usize {
        let (mut low, mut high) = (0, self.len());
        while low + 1 < high {
            let mid = (low + high) / 2;
            if self[mid] < *x {
                low = mid;
            } else {
                high = mid;
            }
        }
        if self[low] < *x {
            low + 1
        } else {
            low
        }
    }

    fn upper_bound(&self, x: &T) -> usize {
        let (mut low, mut high) = (0, self.len());
        while low + 1 < high {
            let mid = (low + high) / 2;
            if self[mid] <= *x {
                low = mid;
            } else {
                high = mid;
            }
        }
        if self[low] <= *x {
            low + 1
        } else {
            low
        }
    }
}

fn main() {
    input! {n:usize,h:[i32;n]}
    let mut cost = vec![i32::MAX; n];
    cost[0] = 0;
    for i in 0..n {
        let cur_cost = cost[i];
        for j in (i + 1)..n.min(i + 3) {
            let c = (h[i] - h[j]).abs();
            cost[j] = cost[j].min(c + cur_cost)
        }
    }
    println!("{}", cost.last().unwrap())
}

Submission Info

Submission Time
Task A - Frog 1
User tsu7magu6
Language Rust (rustc 1.70.0)
Score 100
Code Size 1358 Byte
Status AC
Exec Time 3 ms
Memory 3024 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 11
Set Name Test Cases
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07
Case Name Status Exec Time Memory
0_00 AC 1 ms 1872 KiB
0_01 AC 1 ms 1868 KiB
0_02 AC 1 ms 2100 KiB
1_00 AC 1 ms 1980 KiB
1_01 AC 1 ms 1952 KiB
1_02 AC 3 ms 2852 KiB
1_03 AC 3 ms 2908 KiB
1_04 AC 3 ms 2976 KiB
1_05 AC 3 ms 3024 KiB
1_06 AC 3 ms 2972 KiB
1_07 AC 3 ms 2952 KiB