Pagini recente » Cod sursa (job #2358409) | Cod sursa (job #999484) | Cod sursa (job #148533) | Cod sursa (job #2948253) | Cod sursa (job #2326797)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("perle.in");
ofstream fout("perle.out");
int c,n,v[10010],rez,k;
int A() {
if (k >= n) {
return 0;
}
k++;
return 1;
}
int termen(int value) {
if (k >=n || v[k] != value) {
return 0;
}
k++;
return 1;
}
int C();
int parseB() {
if (k >= n) {
return 0;
}
switch (v[k]) {
case 1:
return termen(1)&&A()&&termen(3)&&A()&&C();
case 2:
return termen(2) && parseB();
default:
return 0;
}
}
int C() {
if (k>=n) {
return 0;
}
switch (v[k]){
case 1:
return termen(1)&&termen(2)&& A();
case 2:
return termen(2);
case 3:
return termen(3)&&parseB() && C();
default:
return 0;
}
}
int parseS() {
if (n==1) {
return 1;
}
k=0;
int rez=parseB();
if (k==n&&rez) {
return 1;
}
k=0;
rez = C();
if (k==n&&rez) {
return 1;
}
return 0;
}
int main() {
fin>>c;
while(c){
fin>>n;
for (int i=0;i<n;i++) {
fin>>v[i];
}
rez=parseS();
fout<<rez<<"\n";
c--;
}
}