Pagini recente » Cod sursa (job #374049) | Cod sursa (job #2568945) | Cod sursa (job #407716) | Cod sursa (job #2215350) | Cod sursa (job #2601968)
#include <iostream>
#include<fstream>
#define N 10005
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int a[N], n;
bool adev;
int poz;
void C();
void A()
{
//cout << 'a';
if(poz > n) adev = false;
if(a[poz] != 1 && a[poz] != 2 &&a[poz] != 3)adev = false;
}
void B()
{
//cout << 'b';
if(poz > n)adev = false;
if(a[poz] == 2)
{
poz++;
B();
}
else
{
if(a[poz] != 1)adev = false;
poz++;
A();
poz++;
if(a[poz] != 3)adev = false;
poz++;
A();
poz++;
C();
}
}
void C()
{
//cout << 'c';
if(poz > n)adev = false;
if(poz == n &&a[poz] != 2) adev = 0;
else if(a[poz] == 3)
{
poz++;
B();
poz++;
C();
}
else if(a[poz] == 1)
{
poz++;
if(a[poz] != 2)adev = false;
poz++;
A();
}
else adev = false;
}
void solve()
{
int i;
if(n == 1) A();
else
{
if(a[1] == 2)
{
poz++;
B();
}
else if(a[1] == 3)
{
poz++;
B();
C();
}
else
{
if(a[2] == 2 && n == 3)
{
poz++;
A();
}
else
{
poz++;
A();
poz++;
if(a[poz] != 3)adev = false;
poz++;
A();
poz++;
C();
}
}
}
}
int main()
{
int i, x, j;
fin >> x;
for(i = 1; i <= x; ++ i)
{
fin >> n;
for(j = 1;j <= n ;++j)
fin >> a[j];
adev = true;
poz = 1;
solve();
fout << adev <<"\n";
//cout << poz << " ";
}
return 0;
}