Pagini recente » Cod sursa (job #2268832) | Cod sursa (job #722552) | Cod sursa (job #1434096) | Clasament dasda | Cod sursa (job #2208843)
#include <fstream>
using namespace std;
const int A=4, B=5, C=6;
int n, lg, st[20000], v[10001];
int verif(int n)
{
int vf = 1;
for(int i=1; i<=n; i++)
{
if(vf == 0)
return 0;
else if(st[vf] < 4)
{
if(v[i] != st[vf])
return 0;
else
vf--;
}
else if(st[vf] == A)
--vf;
else if(st[vf] == B)
{
if(v[i] == 1)
{
st[vf] = C;
st[vf+1] = A;
st[vf+2] = 3;
st[vf+3] = A;
vf+=3;
}
if(v[i] == 3)
return 0;
}
else if(st[vf] == C)
{
if(v[i] == 1)
{
st[vf] = A;
st[vf+1] = 2;
vf++;
}
if(v[i] == 2)
--vf;
if(v[i] == 3)
{
st[vf+1] = B;
++vf;
}
}
}
if(vf>0) return 0;
return 1;
}
int main()
{
ifstream fin("perle.in");
ofstream fout("perle.out");
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>lg;
for(int j=1; j<=lg; j++)
fin>>v[j];
int ok = 0;
for(int j=A ; j<=C ; j++)
{
st[1] = j;
if(verif(lg))
ok = 1;
}
fout<<ok<<'\n';
}
return 0;
}