Cod sursa(job #1411402)

Utilizator Ionut228Ionut Calofir Ionut228 Data 31 martie 2015 18:12:24
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

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

const int MOD = 9901;

int N;
int V[2 * 256 + 5];
int dp[2 * 256 + 5][2 * 256 + 5];

int main()
{
    fin >> N;
    for (int i = 1; i <= 2 * N - 1; ++i)
    {
        fin >> V[i];
        dp[i][i] = 1;
    }

    for(int l = 1; l <= 2 * N - 1; ++l)
        for (int j = l + 1; j <= 2 * N - 1; ++j)
        {
            int i = j - l; // iau de la mici la mari
            if (V[i] != V[j] || ((j - i + 1) % 2 == 0))
                continue;

            for (int k = i + 1; k <= j - 1; ++k)
            {
                //if (V[i + 1] != V[k] || V[k + 1] != V[j])
                //    continue;
                dp[i][j] += dp[i + 1][k] * dp[k + 1][j];
                dp[i][j] %= MOD;
            }
        }

    fout << dp[1][2 * N - 1];

    fin.close();
    fout.close();
    return 0;
}