結果
問題 | No.127 門松もどき |
ユーザー |
![]() |
提出日時 | 2015-04-25 17:08:39 |
言語 | Python2 (2.7.18) |
結果 |
RE
|
実行時間 | - |
コード長 | 845 bytes |
コンパイル時間 | 111 ms |
コンパイル使用メモリ | 6,816 KB |
実行使用メモリ | 164,480 KB |
最終ジャッジ日時 | 2024-07-05 02:27:44 |
合計ジャッジ時間 | 15,225 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 RE * 16 |
ソースコード
N=int(raw_input()) A=map(int,raw_input().split()) dpL=[[-1 for j in range(N)] for k in range(N)] dpR=[[-1 for j in range(N)] for k in range(N)] def recL(l,r): global dpL if dpL[l][r]!=-1: return dpL[l][r] if l>r: return 0 if l==r: dpL[l][r]=1 return 1 ans=recL(l,r-1) if A[l]<A[r]: ans=max(ans,recR(l+1,r)+1) dpL[l][r]=ans #print "dpL",l,r,"=",dpL[l][r] return dpL[l][r] def recR(l,r): global dpR if dpR[l][r]!=-1: return dpR[l][r] if l>r: return 0 if l==r: dpR[l][r]=1 return 1 ans=recR(l+1,r) if A[l]>A[r]: ans=max(ans,recL(l,r-1)+1) dpR[l][r]=ans #print "dpR",l,r,"=",dpR[l][r] return dpR[l][r] ans=0 for i in range(N): ans=max(ans,recL(i,N-1)) ans=max(ans,recR(0,i)) print ans