Pagini recente » Cod sursa (job #703444) | Cod sursa (job #2287134) | Cod sursa (job #2061189) | Cod sursa (job #2797731) | Cod sursa (job #41641)
Cod sursa(job #41641)
#include <cstdio>
int T, N;
const int MAX_N = 10005;
int eval[MAX_N];
bool A(int &k) {
if (k >= N)
return false;
++ k;
return true;
}
bool C(int &k);
bool B(int &k) {
if (k >= N)
return false;
if (eval[k] == 3)
return false;
if (eval[k] == 1) {
++ k;
A(k);
if (eval[k] != 3)
return false;
++ k;
A(k);
return C(k);
}
if (eval[k] == 2) {
++ k;
return B(k);
}
}
bool C(int &k) {
if (eval[k] == 1) {
++ k;
if (eval[k] != 2)
return false;
++ k;
return A(k);
}
if (eval[k] == 2) {
++ k;
return true;
}
if (eval[k] == 3) {
++ k;
if (B(k) == false)
return false;
return C(k);
}
}
int Try(void) {
if (N == 1)
return 1;
int k = 0;
bool yes = B(k);
if (yes == true && k == N)
return 1;
k = 0;
return (C(k) && k == N);
}
int main(void) {
FILE *in = fopen("perle.in", "r"),
*out = fopen("perle.out", "w");
fscanf(in, "%d", &T);
int i, j;
for (i = 0; i < T; ++ i) {
fscanf(in, "%d", &N);
for (j = 0; j < N; ++ j)
fscanf(in, "%d", &eval[j]);
fprintf(out, "%d\n", Try());
}
fclose(in);
fclose(out);
return 0;
}