Cod sursa(job #1151708)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 24 martie 2014 12:24:13
Problema Culori Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

#define DN 555
#define INF (1<<30)
#define MOD 9901
using namespace std;

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

int v[DN],dp[DN][DN],n;


void read(){

    f>>n;
    n= 2*n - 1;
    for(int i=1;i<=2*n-1;++i)
        f>>v[i];
}

int din(int i,int j){

    if(dp[i][j] != INF)
        return dp[i][j];

    dp[i][j] = 0;

    if(i == j){

        dp[i][j] = 1;
        return dp[i][j];
    }

    for(int k=i+1;k<j;++k){

        dp[i][j] = (dp[i][j] + din(i+1,k) * din(k+1,j) ) %MOD;
    }
    return dp[i][j];
}


void init(){

    for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
            dp[i][j] = INF;
}
void solve(){

    init();
    if(v[1] != v[n])
        g<<0;
        else
            g<<din(1,n);
}

int main()
{
    read();
    solve();

    return 0;
}