結果

問題 No.127 門松もどき
ユーザー gigurururugigurururu
提出日時 2015-01-15 19:54:03
言語 Ruby
(3.4.1)
結果
AC  
実行時間 2,765 ms / 5,000 ms
コード長 424 bytes
コンパイル時間 66 ms
コンパイル使用メモリ 7,424 KB
実行使用メモリ 189,184 KB
最終ジャッジ日時 2024-12-23 21:54:48
合計ジャッジ時間 28,995 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 23
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

def dfs(d,l,r)
  Memo[d][l][r]||=(
    if l==r
      1
    elsif d==0
      if A[l]>=A[r]
        dfs(0,l,r-1)
      else
        [dfs(0,l,r-1),dfs(1,l+1,r)+1].max
      end
    else
      if A[l]<=A[r]
        dfs(1,l+1,r)
      else
        [dfs(1,l+1,r),dfs(0,l,r-1)+1].max
      end
    end
  )
end

N=gets.to_i
A=gets.split.map(&:to_i)
Memo=[0,1].map{(1..N).map{[]}}
p (0...N).flat_map{|i|[dfs(0,i,N-1),dfs(1,0,i)]}.max
0