Pagini recente » Cod sursa (job #1895905) | Cod sursa (job #1833215) | Cod sursa (job #455293) | Cod sursa (job #505807) | Cod sursa (job #2606342)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("culori.in");
ofstream fout("culori.out");
const int NMAX = 256;
const long long MOD = 9901;
long long v[2 * NMAX], dp[2 * NMAX][2 * NMAX];
long long calc( int st, int dr ) {
if( v[st] != v[dr] ) {
dp[st][dr] = 0;
return dp[st][dr];
}
if( st > dr )
return 0;
if( dp[st][dr] != -1 )
return dp[st][dr];
if( st == dr ) {
dp[st][dr] = 1;
return dp[st][dr];
}
int color = v[st];
dp[st][dr] = 0;
for( int i = st; i <= dr; i ++ ) {
if( v[i] == color ) {
dp[st][dr] =( dp[st][dr] + (calc(st + 1, i - 1) * calc(i, dr)) % MOD ) % MOD;
}
}
return dp[st][dr] % MOD;
}
int main() {
int n;
fin>>n;
for( int i = 1; i <= 2 * n - 1; i ++ )
fin>>v[i];
for( int i = 1; i <= 2 * n - 1; i ++ )
for( int j = 1; j <= 2 * n - 1; j ++ )
dp[i][j] = -1;
calc(1, 2*n - 1);
fout<<dp[1][2*n - 1];
return 0;
}