Cod sursa(job #2009285)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 9 august 2017 10:25:16
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>

using namespace std;

const int MOD = 9901;

const int MAX_N = 257;

int n;

int v[2 * MAX_N];

int DP[2 * MAX_N][2 * MAX_N];

int main() {
    ifstream in("culori.in");
    in >> n;

    n = 2 * n - 1;

    for(int i = 1 ; i <= n ; ++i)
        in >> v[i];

    for(int i = 1 ; i <= n ; ++i)
        DP[i][i] = 1;

    for(int l = 1 ; l <= n ; ++l) {
        for(int j = l + 1 ; j <= n ; ++j) {
            int i = j - l;
            if(v[i] != v[j])
                continue;

            for(int k = i + 1 ; k < j ; ++k) {
                if(v[i + 1] != v[k])
                    continue;

                DP[i][j] += DP[i + 1][k] * DP[k + 1][j];
                DP[i][j] = (DP[i][j] % MOD);
            }
        }
    }

    ofstream out("culori.out");
    out << DP[1][n] << "\n";
    out.close();

}