結果

問題 No.91 赤、緑、青の石
ユーザー tsuchinagatsuchinaga
提出日時 2019-03-20 12:15:31
言語 Go
(1.22.1)
結果
WA  
実行時間 -
コード長 1,443 bytes
コンパイル時間 12,274 ms
コンパイル使用メモリ 226,376 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-09-18 18:07:04
合計ジャッジ時間 13,503 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 AC 1 ms
5,376 KB
testcase_07 AC 1 ms
5,376 KB
testcase_08 AC 1 ms
5,376 KB
testcase_09 AC 2 ms
5,376 KB
testcase_10 AC 1 ms
5,376 KB
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 AC 2 ms
5,376 KB
testcase_17 AC 2 ms
5,376 KB
testcase_18 AC 2 ms
5,376 KB
testcase_19 AC 2 ms
5,376 KB
testcase_20 AC 1 ms
5,376 KB
testcase_21 AC 1 ms
5,376 KB
testcase_22 AC 1 ms
5,376 KB
testcase_23 AC 2 ms
5,376 KB
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 AC 1 ms
5,376 KB
testcase_28 AC 1 ms
5,376 KB
testcase_29 AC 1 ms
5,376 KB
testcase_30 AC 2 ms
5,376 KB
testcase_31 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import (
	"fmt"
	"math"
)

func main() {
	var r, g, b, ans int
	_, _ = fmt.Scan(&r, &g, &b)

	// 1個ずつ減らす
	if r <= g && r <= b {
		r, g, b, ans = 0, g-r, b-r, r
	} else if g <= r && g <= b {
		r, g, b, ans = r-g, 0, b-g, g
	} else if b <= r && b <= g {
		r, g, b, ans = r-b, g-b, 0, b
	}

	// fmt.Println(r, g, b, ans)

	// 少ない方から1つ、多い方から3つ取るってのを最大2回
	for i := 0; i < 2; i++ {
		if r == 0 && g > 0 && b > 0 {
			if g > b {
				n := int(math.Min(float64(g/3), float64(b)))
				g, b, ans = g-3*n, b-n, ans+n
			} else {
				n := int(math.Min(float64(b/3), float64(g)))
				g, b, ans = g-n, b-3*n, ans+n
			}
		} else if g == 0 && r > 0 && b > 0 {
			if r > b {
				n := int(math.Min(float64(r/3), float64(b)))
				r, b, ans = r-3*n, b-n, ans+n
			} else {
				n := int(math.Min(float64(b/3), float64(r)))
				r, b, ans = r-n, b-3*n, ans+n
			}
		} else if b == 0 && r > 0 && g > 0 {
			if r > g {
				n := int(math.Min(float64(r/3), float64(g)))
				r, g, ans = r-3*n, g-n, ans+n
			} else {
				n := int(math.Min(float64(g/3), float64(r)))
				r, g, ans = r-n, g-3*n, ans+n
			}
		}
	}

	// fmt.Println(r, g, b, ans)

	// 5つ取る
	if r == 0 && g == 0 && b >= 5 {
		b, ans = b%5, ans+b/5
	} else if r == 0 && g >= 5 && b == 0 {
		g, ans = g%5, ans+g/5
	} else if r >= 5 && g == 0 && b == 0 {
		r, ans = r%5, ans+r/5
	}

	// fmt.Println(r, g, b, ans)

	fmt.Println(ans)
}
0