Pagini recente » Cod sursa (job #1647004) | Cod sursa (job #584130) | Cod sursa (job #2580513) | Cod sursa (job #780237) | Cod sursa (job #2696487)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
const int NMax = 10, LMax = 1e4;
int n, l;
int v[LMax + 5];
void Read(){
fin >> l;
for (int i = 1; i <= l; i++)
fin >> v[i];
}
int isA(int ind1, int ind2);
int isB(int ind1, int ind2);
int isC(int ind1, int ind2);
int isA(int ind1, int ind2){
if (ind1 == ind2)
return 1;
return 0;
}
int isB(int ind1, int ind2){
if (ind1 > ind2)
return 0;
if (v[ind1] == 2 && isB(ind1 + 1, ind2))
return 1;
if (ind1 + 4 <= ind2 && v[ind1] == 1 && isA(ind1 + 1, ind1 + 1) && v[ind1 + 2] == 3 && isA(ind1 + 3, ind1 + 3) && isC(ind1 + 4, ind2))
return 1;
return 0;
}
int isC(int ind1, int ind2){
if (ind1 > ind2)
return 0;
if (ind1 == ind2 && v[ind1] == 2)
return 1;
if (ind1 + 2 <= ind2 && v[ind1] == 1 && v[ind1 + 1] == 2 && isA(ind1 + 2, ind2))
return 1;
if (v[ind1] != 3)
return 0;
ind1++;
for (int i = ind1; i < ind2; i++)
if (isB(ind1, i) && isC(i + 1, ind2))
return 1;
return 0;
}
void Print(){
if (isA(1, l) || isB(1, l) || isC(1, l))
fout << 1 << '\n';
else
fout << 0 << '\n';
}
int main(){
fin >> n;
for (int i = 1; i <= n; i++){
Read();
Print();
}
return 0;
}