Cod sursa(job #2315096)
Utilizator | Usurelu Florian-Robert usureluflorian | Data | 9 ianuarie 2019 14:19:09 |
---|---|---|---|
Problema | Culori | Scor | 48 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f ("culori.in");
ofstream g ("culori.out");
const int mod=9901;
const int nmax=1e3+3;
int v[nmax],dp[nmax][nmax],n,nr,prod;
int main()
{
f>>n;
nr=2*n-1;
for(int i=1;i<=nr;++i) f>>v[i];
for(int i=1;i<=nr;++i) dp[1][i]=1;
for(int k=2;k<=nr;++k)
{
for(int i=1;i<=nr-k+1;++i)
{
if(v[i]==v[i+k-1])
{
for(int j=i+1;j<=i+k-1;++j) if(v[j]==v[i]) dp[k][i]=(dp[k][i]+dp[j-i-1][i+1]*dp[k-j+i][j])%mod;
dp[k][i]%=mod;
}
}
}
g<<dp[nr][1];
return 0;
}