Cod sursa(job #1502434)

Utilizator akaprosAna Kapros akapros Data 14 octombrie 2015 17:32:34
Problema Culori Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxN 256
#define mod 9901
using namespace std;
int i, j, k, n, v[maxN * 2];
int dp[maxN * 2][maxN * 2];
void read()
{
    freopen("culori.in", "r", stdin);
    scanf("%d", &n);
    for (i = 1; i < 2 * n; ++ i)
        scanf("%d", &v[i]);
}
void solve()
{
    for (i = 2 * n - 1; i >= 1; -- i)
        for (j = i; j < 2 * n; ++ j)
            if (v[i] == v[j])
    {
        if (i == j)
            dp[i][j] = 1;
        else
        for (k = i + 1; k < j; ++ k)
            if (v[i + 1] == v[k])
               dp[i][j] = (dp[i][j] + dp[i + 1][k] * dp[k + 1][j]) % mod;
    }
}
void write()
{
    freopen("culori.out", "w", stdout);
    printf("%d", dp[1][n * 2 - 1]);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}