Cod sursa(job #2717289)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 6 martie 2021 23:23:58
Problema Culori Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 520;
const int mod = 9901;
int N, a[NMAX], dp[NMAX][NMAX];

void add_self(int &a, int b) {
    a += b;
    if(a >= mod)
        a -= mod;
}

int main() {
    fin >> N;
    N = 2 * N - 1;
    for(int i = 1; i <= N; ++i) {
        fin >> a[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(a[i] == a[j] && !((i + j) & 1))
                for(int k = i + 1; k < j; ++k)
                    if(a[i + 1] == a[k])
                        add_self(dp[i][j], dp[i + 1][k] * dp[k + 1][j] % mod);
        }
    fout << dp[1][N] << '\n';
}