提出 #25059242


ソースコード 拡げる

package main

import (
	"bufio"
	"fmt"
	"log"
	"math"
	"os"
	"strconv"
)

var scanner = bufio.NewScanner(os.Stdin)

func AnswerABC214C(N int, S, T []int) []int {
	// dp[i]: i番目のすぬけ君が宝石を持ったときの最小の時刻
	dp := make([]int, N)
	dp[0] = 1e+9 + 10

	for i := 0; i < N; i++ {
		dp[i] = T[i]
	}

	for i := 1; i <= 2*N; i++ {
		// 添字がややこしいので変数に抽出したほうがいい
		now := (i + 1) % N
		prev := i % N

		dp[now] = Min(
			dp[now],
			dp[prev]+S[prev],
		)
	}

	return dp
}

func main() {
	scanner.Split(bufio.ScanWords)
	scanner.Buffer([]byte{}, math.MaxInt32)

	N := getInt()
	S := getInts(N)
	T := getInts(N)

	dp := AnswerABC214C(N, S, T)
	for _, d := range dp {
		fmt.Println(d)
	}
}

func AbsInt(x int) int {
	if x < 0 {
		return -x
	} else {
		return x
	}
}

func Min(x, y int) int {
	if x < y {
		return x
	} else {
		return y
	}
}

func Max(x, y int) int {
	if x < y {
		return y
	} else {
		return x
	}
}

func FindMax(nums []int) int {
	var max = -math.MaxInt32
	for _, n := range nums {
		if max < n {
			max = n
		}
	}
	return max
}

// 入力受け取り用の汎用関数群
func getInt() int {
	scanner.Scan()

	i, err := strconv.Atoi(scanner.Text())
	if err != nil {
		log.Fatal(err)
	}

	return i
}

func getInts(size int) []int {
	ints := make([]int, size)

	for i := 0; i < size; i++ {
		ints[i] = getInt()
	}

	return ints
}

func getFloat() float64 {
	scanner.Scan()

	float, err := strconv.ParseFloat(scanner.Text(), 64)
	if err != nil {
		log.Fatal(err)
	}

	return float
}

func getFloats(size int) []float64 {
	floats := make([]float64, size)

	for i := 0; i < size; i++ {
		floats[i] = getFloat()
	}

	return floats

}

func getInt64() int64 {
	scanner.Scan()

	i, err := strconv.Atoi(scanner.Text())
	if err != nil {
		log.Fatal(err)
	}

	return int64(i)
}

func getInt64s(size int) []int64 {
	ints := make([]int64, size)

	for i := 0; i < size; i++ {
		ints[i] = getInt64()
	}

	return ints
}

func getString() string {
	scanner.Scan()

	return scanner.Text()
}

func getStrings(size int) []string {
	S := make([]string, size)

	for i := 0; i < size; i++ {
		S[i] = getString()
	}

	return S
}

func getTuples(size int, tupleSize int) [][]int {
	tuples := make([][]int, size)

	for i := 0; i < size; i++ {
		tuples[i] = make([]int, tupleSize)
		for j := 0; j < tupleSize; j++ {
			tuples[i][j] = getInt()
		}
	}
	return tuples
}

提出情報

提出日時
問題 C - Distribution
ユーザ gohira
言語 Go (1.14.1)
得点 300
コード長 2598 Byte
結果 AC
実行時間 381 ms
メモリ 10680 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 300 / 300
結果
AC × 4
AC × 32
セット名 テストケース
Sample sample_00.txt, sample_01.txt, sample_02.txt, sample_03.txt
All case_00.txt, case_01.txt, case_02.txt, case_03.txt, case_04.txt, case_05.txt, case_06.txt, case_07.txt, case_08.txt, case_09.txt, case_10.txt, case_11.txt, case_12.txt, case_13.txt, case_14.txt, case_15.txt, case_16.txt, case_17.txt, case_18.txt, case_19.txt, case_20.txt, case_21.txt, case_22.txt, case_23.txt, case_24.txt, case_25.txt, case_26.txt, case_27.txt, sample_00.txt, sample_01.txt, sample_02.txt, sample_03.txt
ケース名 結果 実行時間 メモリ
case_00.txt AC 381 ms 9816 KiB
case_01.txt AC 373 ms 10680 KiB
case_02.txt AC 54 ms 3164 KiB
case_03.txt AC 7 ms 1876 KiB
case_04.txt AC 186 ms 6264 KiB
case_05.txt AC 73 ms 3900 KiB
case_06.txt AC 271 ms 8340 KiB
case_07.txt AC 138 ms 6076 KiB
case_08.txt AC 237 ms 7244 KiB
case_09.txt AC 362 ms 9684 KiB
case_10.txt AC 27 ms 2360 KiB
case_11.txt AC 116 ms 5348 KiB
case_12.txt AC 102 ms 4892 KiB
case_13.txt AC 324 ms 9616 KiB
case_14.txt AC 17 ms 2028 KiB
case_15.txt AC 170 ms 6888 KiB
case_16.txt AC 208 ms 6216 KiB
case_17.txt AC 230 ms 7156 KiB
case_18.txt AC 269 ms 7172 KiB
case_19.txt AC 296 ms 8720 KiB
case_20.txt AC 300 ms 8720 KiB
case_21.txt AC 296 ms 8600 KiB
case_22.txt AC 361 ms 10380 KiB
case_23.txt AC 360 ms 10400 KiB
case_24.txt AC 361 ms 10380 KiB
case_25.txt AC 358 ms 10380 KiB
case_26.txt AC 361 ms 10364 KiB
case_27.txt AC 362 ms 10436 KiB
sample_00.txt AC 7 ms 1816 KiB
sample_01.txt AC 2 ms 1812 KiB
sample_02.txt AC 2 ms 1816 KiB
sample_03.txt AC 3 ms 1820 KiB