結果
問題 | No.1885 Flat Permutation |
ユーザー |
|
提出日時 | 2022-05-14 20:38:19 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 708 bytes |
コンパイル時間 | 12,079 ms |
コンパイル使用メモリ | 235,808 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-23 07:36:05 |
合計ジャッジ時間 | 13,840 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 43 |
ソースコード
package main import ( "bufio" "fmt" "os" "strconv" ) var sc = bufio.NewScanner(os.Stdin) func solve(n, x, y int) int { const p = 998244353 if x > y { x, y = y, x } d := y - x if y != n { d-- } if x != 1 { d-- } if d < 0 { return 0 } dp := make([]int, d+1) dp[0] = 1 for i := 0; i < d; i++ { dp[i+1] += dp[i] dp[i+1] %= p if i+3 <= d { dp[i+3] += dp[i] dp[i+3] %= p } } return dp[d] } func main() { buf := make([]byte, 1024*1024) sc.Buffer(buf, bufio.MaxScanTokenSize) sc.Split(bufio.ScanWords) n, x, y := nextInt(), nextInt(), nextInt() ans := solve(n, x, y) fmt.Println(ans) } func nextInt() int { sc.Scan() i, _ := strconv.Atoi(sc.Text()) return i }