Pagini recente » Cod sursa (job #1525997) | Cod sursa (job #1719267) | Cod sursa (job #884975) | Cod sursa (job #2070985) | Cod sursa (job #18589)
Cod sursa(job #18589)
#include <stdio.h>
#include <queue>
#define NMAX 512
#define MOD 9901
int A[NMAX];
int parent[NMAX];
int st[NMAX];
int N, ind, sol,p;
void arbori(int niv)
{
st[++p] = A[ind];
if (niv>N)
{
st[p] = 0;
--p;
return;
}
if (ind == 2*N-1)
{
st[p] = 0;
--p;
if (niv == 1)
sol += 1;
return;
}
++ind;
if (A[ind] == st[p-1])
{
int x = st[p-1];
int x2 = st[p];
st[p] = 0;
st[p-1] = 0;
p-=2;
arbori(niv-1);
p+=2;
st[p] = x2;
st[p-1] = x;
}
arbori(niv+1);
st[p] = 0;
--p;
--ind;
}
int main()
{
freopen("culori.in", "r", stdin);
freopen("culori.out", "w", stdout);
scanf("%d", &N);
for (int i = 1; i<=2*N-1; ++i)
{
scanf("%d", &A[i]);
}
ind = 1;
parent[A[1]] = -1;
sol = 0;
p = 0;
st[0] = -1;
arbori(1);
printf("%d\n", sol);
}