Pagini recente » Cod sursa (job #2567295) | Cod sursa (job #719226) | Cod sursa (job #1864336) | Cod sursa (job #2817584) | Cod sursa (job #3284836)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("culori.in");
ofstream fout("culori.out");
const int nmax = 550;
const int MOD = 9901;
vector<vector<int>> dp(nmax,vector<int> (nmax,0));
vector<int> values(nmax,0);
int n;
void read_input(){
fin >> n;
for(int i = 1; i <=2*n-1; i++){
fin >> values[i];
}
};
void solve(){
for(int i = 1; i <=2*n-1; i++){
dp[i][i] = 1;
};
for(int len = 2; len < 2*n; len+=2){
for(int j = 1; j + len <= 2*n-1; j++){
int index_1,index_2;
index_1 = j,index_2 = j + len;
if(values[index_1] == values[index_2]){
for(int k = index_1+1; k < index_2; k++){
if(values[index_1+1] == values[k]){
dp[index_1][index_2] = 1LL*(dp[index_1][index_2] + 1LL*(dp[index_1+1][k] * dp[k+1][index_2])%MOD)%MOD;
}
}
}
}
};
fout << dp[1][2*n-1]%MOD;
};
int main(){
read_input();
solve();
return 0;
}