Pagini recente » Cod sursa (job #2657648) | Cod sursa (job #724812) | Cod sursa (job #416239) | Cod sursa (job #1383020) | Cod sursa (job #3241098)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const int NMAX = 10001;
int q;
int i, n, v[NMAX+1];
int A(), B(), C();
int A()
{
if(i == n+1)
return 0;
if(v[i] == 1 || v[i] == 2 || v[i] == 3)
{
i++;
return 1;
}
return 0;
}
int B()
{
if(i == n+1)
return 0;
if(v[i] == 2)
{
i++;
return B();
}
else if(v[i] == 1)
{
i++;
int okA = A();
if(okA == 0)return 0;
if(v[i] != 3)return 0;
i++;
okA = A();
if(okA == 0)return 0;
return C();
}
return 0;
}
int C()
{
if(i == n+1)
return 0;
if(v[i] == 2)
{
i++;
return 1;
}
else if(v[i] == 3)
{
i++;
int okB = B();
if(okB == 0)return 0;
return C();
}
else if(v[i] == 1)
{
i++;
if(v[i] != 2){return 0;}
else {i++; return A();}
}
return 0;
}
int main()
{
fin >> q;
while(q--)
{
fin >> n;
for(int j=1; j<=n; j++)
fin >> v[j];
i = 1; int adv = A();
if(i == n+1 && adv){fout << 1 << '\n'; continue;}
i = 1; adv = B();
if(i == n+1 && adv){fout << 1 << '\n'; continue;}
i = 1; adv = C();
if(i == n+1 && adv){fout << 1 << '\n'; continue;}
fout << 0 << '\n';
}
return 0;
}