Cod sursa(job #1211816)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 23 iulie 2014 12:52:56
Problema Culori Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

const int Nmax = 2 * 256 + 1;

int A[Nmax][Nmax];
int Euler[Nmax];
int N;

int main()
{
    ifstream in("culori.in");
    ofstream out("culori.in");

    in.sync_with_stdio( false );

    in >> N;

    N = 2 * N - 1;

    for ( int i = 1; i <= N; ++i )
        in >> Euler[i];

    for ( int i = N; i >= 1; i-- )
    {
        A[i][i] = 1;

        for ( int j = i + 1; j <= N; ++j )
        {
            if ( ( i + j ) % 2 )
            {
                 for ( int k = i + 1; k <= j - 1; ++k )
                {
                    if ( Euler[i + 1] == Euler[k] )
                        A[i][j] = ( A[i][j] + A[i + 1][k] * A[k + 1][j] ) % 9901;
                }
            }
        }
    }

    out << A[1][N];

    return 0;
}