Cod sursa(job #1570656)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 16 ianuarie 2016 18:43:31
Problema Culori Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

const int MAX_N = 256;
const int MOD = 9901;

int D[1 + MAX_N][1 + MAX_N];
int C[1 + MAX_N];

int main() {
    int n, i, j, k;

    in >> n;
    for(i = 1; i <= 2 * n - 1; i++) {
        in >> C[i];
        D[i][i] = 1;
    }
    for(i = 3; i <= 2 * n - 1; i += 2) {
        for(j = 1; j <= 2 * n - i; j++) {
            if(C[j] == C[j + i - 1]) {
                for(k = j + 1; k < j + i - 1; k++) {
                    if(C[j + 1] == C[k]) {
                        D[j][j + i - 1] += (D[j + 1][k] * D[k + 1][j + i - 1]) % MOD;
                    }
                }
            }
        }
    }

    out << D[1][2 * n - 1] << '\n';
    return 0;
}