結果

問題 No.3429 Palindromic Path (Hard)
コンテスト
ユーザー tomerun
提出日時 2026-01-11 14:34:22
言語 Crystal
(1.18.2)
結果
WA  
実行時間 -
コード長 929 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,455 ms
コンパイル使用メモリ 338,932 KB
実行使用メモリ 7,852 KB
最終ジャッジ日時 2026-01-11 14:34:40
合計ジャッジ時間 13,520 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 1
other AC * 1 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

MOD = 998244353i64
n = read_line.to_i
cs = Array.new(n) { read_line.chars }
fs = Array.new(n) do |i|
  Array.new(i + 1) do |j|
    cs[i - j][j]
  end
end
ss = Array.new(n) do |i|
  Array.new(i + 1) do |j|
    cs[n - 1 - (i - j)][n - 1 - j]
  end.reverse
end
if fs[0][0] != ss[0][0]
  puts 0
  exit
end
dp = Array.new(1) { [1i64] }
1.upto(n - 1) do |i|
  dp2 = Array.new(i + 1) { Array.new(i + 1, 0i64) }
  i.times do |j|
    i.times do |k|
      if fs[i][j] == ss[i][k]
        dp2[j][k] += dp[j][k]
        dp2[j][k] %= MOD
      end
      if fs[i][j + 1] == ss[i][k]
        dp2[j + 1][k] += dp[j][k]
        dp2[j + 1][k] %= MOD
      end
      if fs[i][j] == ss[i][k]
        dp2[j][k + 1] += dp[j][k]
        dp2[j][k + 1] %= MOD
      end
      if fs[i][j + 1] == ss[i][k]
        dp2[j + 1][k + 1] += dp[j][k]
        dp2[j + 1][k + 1] %= MOD
      end
    end
  end
  dp = dp2
end
puts n.times.sum { |i| dp[i][i] } % MOD
0