Cod sursa(job #1116824)
| Utilizator | Data | 22 februarie 2014 20:40:21 | |
|---|---|---|---|
| Problema | Culori | Scor | 44 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <fstream>
#define mod 9901
using namespace std;
ifstream fin ("culori.in");
ofstream fout ("culori.out");
int n,c[501];
int dp[501][501];
int main()
{
fin>>n;
n = 2*n-1;
for (int i=1; i<=n; ++i)
fin>>c[i];
for (int i=1; i<=n; ++i)
dp[i][i] = 1;
for (int i=2; i<=n; i+=2)
{
for (int j=1; j+i <=n; ++j)
{
if (c[j] != c[i+j])
continue;
for (int k=j+1; k<=j+i; ++k)
{
if (c[k] == c[j])
dp[j][i+j] += dp[j+1][k-1]*dp[k][i+j]%mod;
if (dp[j][i+j] >= mod) dp[j][i+j] -= mod;
}
}
}
fout<<dp[1][n];
}
