Pagini recente » Cod sursa (job #1277094) | Cod sursa (job #21329) | Cod sursa (job #952590) | Cod sursa (job #2856090) | Cod sursa (job #1904471)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int NMax = 12;
const int LMax = 10050;
ifstream fin ("perle.in");
ofstream fout ("perle.out");
int sequence[2][LMax];
int N, L;
int go_down(int length)
{
int check[2], level[2];
check[0] = check[1] = 1;
level[0] = level[1] = 1;
sequence[0][0] = 5;
sequence[1][0] = 6;
while (length--)
{
int x;
fin >>x;
for (int i = 0; i < 2; ++i)
{
if (check[i])
{
if (sequence[i][level[i] - 1] <= 3) //A
{ check[i] = (sequence[i][--level[i]] == x); continue; }
if (sequence[i][level[i] - 1] == 4) //1 | 2 | 3
{ --level[i]; continue;}
if (sequence[i][level[i] - 1] == 5)
{
if (x == 3)
check[i] = 0; //not sure
if (x == 1) //1A3AC
{
--level[i];
sequence[i][level[i]++] = 6;
sequence[i][level[i]++] = 4;
sequence[i][level[i]++] = 3;
sequence[i][level[i]++] = 4;
}
continue;
}
}
if (x == 2) //C
--level[i];
if (x == 1) //12A
{
--level[i];
sequence[i][level[i]++] = 4;
sequence[i][level[i]++] = 2;
}
if (x == 3) //3BC
{
--level[i];
sequence[i][level[i]++] = 6;
sequence[i][level[i]++] = 5;
}
if (!level[i] && length)
check[i] = 0;
}
}
return ((!level[0] && check[0]) || (!level[1] && check[1]));
}
int main()
{
fin >>N;
while (N--)
{
fin >>L;
if (L == 1)
fout <<1 <<'\n';
else
fout <<go_down(L) <<'\n';
}
return 0;
}