Pagini recente » Cod sursa (job #1203131) | Cod sursa (job #3247426) | Cod sursa (job #655830) | Cod sursa (job #830222) | Cod sursa (job #2243680)
#include <fstream>
#include <cstring>
#include <deque>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int N, lenght, s[10005];
int myS[10005];
deque <int> deq;
void Solve()
{
fin >> lenght;
for(int i = 1; i <= lenght; i++)
fin >> s[i];
if(s[1] == 1)
{
if(lenght == 1)
{
fout << 1 << '\n';
return;
}
if(lenght == 3 && s[2] == 2)
{
fout << 1 << '\n';
return;
}
if(lenght == 3 && s[2] != 2)
{
fout << 0 << '\n';
return;
}
if(lenght == 4)
{
fout << 0 << '\n';
return;
}
if(lenght >= 5)
{
myS[1] = 1;
deq.push_back(-1);
deq.push_back(3);
deq.push_back(-1);
deq.push_back(-3);
}
}
else if(s[1] == 2)
{
if(lenght == 1)
{
fout << 1 << '\n';
return;
}
if(2 <= lenght && lenght <= 5)
{
fout << 0 << '\n';
return;
}
else
{
myS[1] = 2;
deq.push_back(-2);
}
}
else
{
if(lenght == 1)
{
fout << 1 << '\n';
return;
}
if(2 <= lenght && lenght <= 6)
{
fout << 0 << '\n';
return;
}
else
{
myS[1] = 3;
deq.push_back(-2);
deq.push_back(-3);
}
}
for(int i = 2; i <= lenght; i++)
{
if(deq.size() == 0 && deq.size() > lenght - i + 1)
{
fout << 0 << '\n';
return;
}
if(deq.front() == -1)
{
myS[i] = s[i];
deq.pop_front();
}
else if(deq.front() == -2)
{
if(s[i] == 3)
{
fout << 0 << '\n';
return;
}
else if(s[i] == 2)
{
myS[i] = 2;
deq.pop_front();
deq.push_front(-2);
}
else
{
myS[i] = 1;
deq.pop_front();
deq.push_front(-3);
deq.push_front(-1);
deq.push_front(3);
deq.push_front(-1);
}
}
else if(deq.front() == -3)
{
if(s[i] == 2)
{
myS[i] = 2;
deq.pop_front();
}
else if(s[i] == 1)
{
myS[i] = 1;
deq.pop_front();
deq.push_front(-1);
deq.push_front(2);
}
else
{
myS[i] = 2;
deq.pop_front();
deq.push_front(-3);
deq.push_front(-2);
}
}
else
{
if(deq.front() != s[i])
{
fout << 0 << '\n';
return;
}
else
{
myS[i] = deq.front();
deq.pop_front();
}
}
}
if(deq.size())
{
fout << 0 << '\n';
return;
}
fout << 1 << '\n';
return;
}
int main()
{
fin >> N;
for(int i = 1; i <= N; i++)
{
deq.clear();
memset(myS, 0, sizeof(myS));
Solve();
}
return 0;
}