Cod sursa(job #2978048)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 12 februarie 2023 20:40:05
Problema Culori Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

#define int long long

using namespace std;

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

const int nmax = 256;
const int mod = 9901;

int n;
int v[2 * nmax + 5];
int dp[2 * nmax + 5][2 * nmax + 5];

signed main()
{
    fin >> n;
    n = 2 * n - 1;
    for(int i = 1; i <= n; i ++)
    {
        fin >> v[i];
        dp[i][i] = 1;
    }
    for(int lg = 2; lg <= n; lg ++)
    {
        for(int i = 1; i + lg - 1 <= n; i ++)
        {
            int j = i + lg - 1;
            if(v[i] == v[j] && lg % 2 == 1)
            {
                for(int k = i + 1; k < j; k ++)
                {
                    if(v[i + 1] == v[k])
                    {
                        dp[i][j] += dp[i + 1][k] * dp[k + 1][j];
                        dp[i][j] %= mod;
                    }
                }
            }
        }
    }
    fout << dp[1][n] << '\n';
    return 0;
}