Cod sursa(job #1954880)

Utilizator EzrealHorodinca Mihai Ezreal Data 5 aprilie 2017 18:25:55
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;

ifstream fin( "culori.in" );
ofstream fout( "culori.out" );

const int nmax = 2 * 256 - 1;
const int mod = 9901;
int e[ nmax + 1 ];
int d[ nmax + 1 ][ nmax + 1 ];

int main() {
    int n;
    fin >> n;
    n = n * 2 - 1;
    for( int i = 1; i <= n; ++ i ) {
        fin >> e[ i ];
        d[ i ][ i ] = 1;
    }
    for( int x = 2; x <= n - 1; x += 2 ) {
        for( int i = 1; i + x <= n; ++ i ) {
            int j = i + x;
            d[ i ][ j ] = 0;
            if ( e[ i ] == e[ j ] ) {
                for( int k = i + 1; k < j; ++ k ) {
                    if ( e[ i + 1 ] == e[ k ] ) {
                        d[ i ][ j ] += d[ i + 1 ][ k ] * d[ k + 1 ][ j ];
                        d[ i ][ j ] %= mod;
                    }
                }
            }
        }
    }
    fout << d[ 1 ][ n ] << "\n";
    fin.close();
    fout.close();
    return 0;
}