Pagini recente » Cod sursa (job #3162788) | Cod sursa (job #421363) | Cod sursa (job #1187101) | Cod sursa (job #2620799) | Cod sursa (job #18610)
Cod sursa(job #18610)
#include <stdio.h>
enum { maxn = 257, modulo = 9901 };
int n, p[2 * maxn];
int dp[2 * maxn][maxn];
//dp[pos][depth]
int main()
{
int i, j;
bool bad = false;
FILE *f = fopen("culori.in", "r");
if(!f) return 1;
fscanf(f, "%d", &n);
for(i = 0; i < 2 * n - 1; i++)
{
fscanf(f, "%d", &p[i]);
if(p[i] < 1 || p[i] > n) bad = true;
}
fclose(f);
f = fopen("culori.out", "w");
if(!f) return 1;
if(p[0] != p[2 * n - 2] || bad)
fprintf(f, "0\n");
else
{
dp[2 * n - 2][0] = 1;
for(i = 2 * n - 3; i >= 0; i--) //position
for(j = 0; j < n; j++) //depth
{
if(i - 1 >= 0)
if(p[i - 1] == p[i + 1]) //may go back
dp[i][j] += dp[i + 1][j - 1];
dp[i][j] += dp[i + 1][j + 1];
dp[i][j] %= modulo;
}
fprintf(f, "%d\n", dp[0][0]);
}
fclose(f);
return 0;
}