結果
| 問題 | 
                            No.127 門松もどき
                             | 
                    
| コンテスト | |
| ユーザー | 
                             yaoshimax
                         | 
                    
| 提出日時 | 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
            
            
            
        
            
yaoshimax