結果

問題 No.3300 Frog Game
コンテスト
ユーザー ID 21712
提出日時 2026-01-17 13:37:42
言語 Go
(1.25.5)
結果
WA  
実行時間 -
コード長 1,307 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 13,347 ms
コンパイル使用メモリ 258,172 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-01-17 13:37:57
合計ジャッジ時間 14,068 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 20 WA * 15
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"

func init() {
	// check()
}

func main() {
	var n, a, b int
	Scan(&n,&a,&b)
	defer func() {
		if recover() != nil {
			if solve(n, a, b) {
				Println("sepa")
			} else {
				Println("ryota")
			}
		}	
	}()
	if dpsol(n, a, b) {
		Println("sepa")
	} else {
		Println("ryota")
	}
}

func solve(n, a, b int) bool {
	n--
	if a >= n  {
		return false
	}
	if b >= n {
		return (n / a) % 2 == 0
	}
	if b % a == 0 {
		if (n / a) % 2 != 0 {
			return (n / a) % 2 == 0
		} else {
			return (n / b + (n % b) / a - 1) % 2 == 0
		}
	}
	return (n / a) % 2 == 0
}

func dpsol(n, a, b int) bool {
	if 1+a >= n {
		return false
	}
	dp := make([]int, n+a+1)
	for i := 0; i < a; i++ {
		dp[n-a+i] = 1
	}
	for i := n; i > 1; i-- {
		if dp[i] == 0 {
			continue
		}
		if i-a > 0 {
			dp[i-a] = max(dp[i-a], 3-dp[i])
		}
		if i-b > 0 {
			dp[i-b] = max(dp[i-b], 3-dp[i])
		}
	}
	return dp[1] == 2
}

func check() {
	for n,m := 1, 2; n < 1e5; n,m = m,n+m {
		for a := 1; a <= 30 && a+1 < n; a++ {
			for b := a+1; b < n && b < a*30; b += a+1 {
				result := dpsol(n, a, b)
				answer := solve(n, a, b)
				if result != answer {
					println(Sprintf("n=%d,a=%d,b=%d",n,a,b))
					println(Sprintf("result=%v", result))
					println(Sprintf("answer=%v", answer))
					panic("WA")
				}
			}
		}
	}
	
	
}
0