Cod sursa(job #3313050)

Utilizator Nasa1004Ema Nicole Gheorghe Nasa1004 Data 1 octombrie 2025 22:05:15
Problema Culori Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;
const int NMAX = 256;
const int MOD = 9901;

ifstream cin("culori.in");
ofstream cout("culori.out");

int dp[2 * NMAX + 2][2 * NMAX + 2]; ///dp[i][j] - nr de moduri sa fm un subarbore co cul (i, j)
int v[2 * NMAX + 2];
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= 2 * n - 1; i++) {
        cin >> v[i];
        dp[i][i] = 1; ///init
    }
    for(int lg = 2; lg <= 2 * n - 1; lg++) {
        for(int i = 1; i <= 2 * n - 1; i++) {
            int j = i + lg - 1;
            if(v[i] != v[j])
                continue;
            for(int k = i; k < j; k++) {
                if(v[i] == v[k]) ///se termina primul subarb acolo
                    dp[i][j] = (dp[i][j] + dp[i][k] * dp[k + 1][j - 1]) % MOD;
            }
        }
    }
    cout << dp[1][2 * n - 1];
    return 0;
}