#include<iostream>
#include<cstring>
using namespace std;
int n,a[1001],dp[1001][1001][2];
int main(){
    cin >> n;
    for (int i=1;i<=n;i++){
        cin >> a[i];
        dp[i][i][0]=1;
        //dp[i][i][1]=1;
    }
    
    for (int i=2;i<=n;i++){             //长度
        for (int j=1;j<=n-i+1;j++){     //起点
            if (a[j]<a[j+1]){                       //假设第一个是新加进来的
                dp[j][j+i-1][0]+=dp[j+1][j+i-1][0];
                dp[j][j+i-1][0]%=19650827;
            }
            if (a[j]<a[j+i-1]){
                dp[j][j+i-1][0]+=dp[j+1][j+i-1][1];
                dp[j][j+i-1][0]%=19650827;
            }

            if (a[j+i-1]>a[j]){                     //假设最后一个是新加进来的
                dp[j][j+i-1][1]+=dp[j][j+i-2][0];
                dp[j][j+i-1][0]%=19650827;
            }
            if (a[j+i-1]>a[j+i-2]){
                dp[j][j+i-1][1]+=dp[j][j+i-2][1];
                dp[j][j+i-1][0]%=19650827;
            }
        }
    }
    cout << (dp[1][n][0]+dp[1][n][1])%19650827;


    return 0;
}

0 comments

No comments so far...

Information

ID
380
Time
1000ms
Memory
256MiB
Difficulty
7
Tags
# Submissions
43
Accepted
12
Uploaded By