Pagini recente » Cod sursa (job #2899428) | Cod sursa (job #2899429) | Cod sursa (job #2005677) | Cod sursa (job #2470866) | Cod sursa (job #2457354)
#include <iostream>
#include <fstream>
#define MaxL 10001
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int l,i,n;
short x[MaxL];
bool perlaB();
bool perlaC()
{
if(i>l)
return false;
switch(x[i])
{
case 1:
if(i+2<=l && x[i]==1 && x[i+1]==2)
{
i+=3;
return true;
}
else return false;
break;
case 2:
return x[i++]==2;
break;
default:
i++;
if(perlaB())
return perlaC();
else return false;
}
}
bool perlaB()
{
if(i>l)
return false;
while(x[i]==2)
i++;
if(i+4<=l)
{
int j=i;
i+=4;
return x[j]==1 && x[j+2]==3 && perlaC();
}
else
return false;
}
bool solve()
{
i=1;
if(l==1) ///perla A
return true;
if(l==3 && x[1]==1 && x[2]==2) ///Perla C
return true;
if(x[1]==3)
{
return perlaC() && i-1==l;
}
else
return perlaB() && i-1==l;
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>l;
for(int i=1;i<=l;i++)
f>>x[i];
g<<solve()<<'\n';
}
f.close();
g.close();
return 0;
}