Cod sursa(job #3284836)

Utilizator luc3lexa_Alexandrescu Luca luc3lexa_ Data 12 martie 2025 11:19:10
Problema Culori Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#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;
}