Cod sursa(job #1164729)

Utilizator PatrikStepan Patrik Patrik Data 2 aprilie 2014 11:50:27
Problema Culori Scor 44
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
    #include<cstdio>
    using namespace std;
    #define NMAX 600
    #define MOD 9901
    int N , v[NMAX] , dp[NMAX][NMAX];

    int main()
    {
        freopen("culori.in" , "r" , stdin );
        freopen("culori.out" , "w" , stdout );
        scanf("%d" , &N );
        N = 2*N-1;
        for(int i = 1 ; i<= N ; ++i )
            scanf("%d" , &v[i]);
        for(int i = 1 ; i<= N ; ++i )
            dp[i][i] = 1;
        for(int l = 3 ; l <= N ; l+=2 )
            for(int i = 1 ; i + l-1 <= N ; ++i )
        {
            int j = i+l-1;
            if(v[j] != v[i])continue;
            for(int k = i+1  ; k < j ; ++k )
            {
                dp[i][j] += dp[i+1][k]*dp[k+1][j];
                while(dp[i][j] >= MOD)dp[i][j]-=MOD;
            }
        }
        printf("%d" , dp[1][N]);
        return 0;
    }