Submission #67462298


Source Code Expand

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func main() {
	reader := bufio.NewReader(os.Stdin)

	// 1行目:N
	line1, _ := reader.ReadString('\n')
	N, _ := strconv.Atoi(strings.TrimSpace(line1))

	// 2行目:h[0]~h[N-1]
	line2, _ := reader.ReadString('\n')
	hStr := strings.Fields(line2)
	h := make([]int, N)
	for i := 0; i < N; i++ {
		h[i], _ = strconv.Atoi(hStr[i])
	}

	if N == 2 {
		fmt.Println(abs(h[1] - h[0]))
		return
	}

	var prev2 int = 0                             // dp[i-2]
	var prev1 int = abs(h[1] - h[0])              // dp[i-1]

	for i := 2; i < N; i++ {
		cost1 := prev1 + abs(h[i]-h[i-1])
		cost2 := prev2 + abs(h[i]-h[i-2])
		curr := min(cost1, cost2)
		prev2 = prev1
		prev1 = curr
	}

	fmt.Println(prev1)
}

func abs(a int) int {
	if a < 0 {
		return -a
	}
	return a
}

Submission Info

Submission Time
Task B16 - Frog 1
User myoshizumi
Language Go (go 1.20.6)
Score 100
Code Size 946 Byte
Status AC
Exec Time 4 ms
Memory 4952 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 1564 KiB
0_01 AC 0 ms 1560 KiB
0_02 AC 0 ms 1560 KiB
1_00 AC 1 ms 1560 KiB
1_01 AC 1 ms 1624 KiB
1_02 AC 4 ms 4776 KiB
1_03 AC 3 ms 4772 KiB
1_04 AC 4 ms 4952 KiB
1_05 AC 4 ms 4912 KiB
1_06 AC 4 ms 4952 KiB
1_07 AC 4 ms 4920 KiB