Pagini recente » Cod sursa (job #168369) | Cod sursa (job #2667265) | Cod sursa (job #2374900) | Cod sursa (job #1609583) | Cod sursa (job #459516)
Cod sursa(job #459516)
#include <cstdio>
int a[10001];
int n, x;
int max,solveC;
bool SolveC(int k);
bool SolveB(int k);
bool SolveB(int k) {
if (a[k] == 2)
return SolveB(k+1);
if (a[k] == 1&& a[k+2] == 3)
return SolveC(k+4);
return 0;
}
bool SolveC(int k) {
max = k;
if (a[k] == 2) {
max = k+1;
return 1;
}
if (a[k] == 1 && a[k+1] == 2 && a[k+2]!=0) {
max = k+3;
return 1;
}
if (a[k] == 3){
++solveC;
return SolveB(k+1);
}
return 0;
}
bool Solve() {
solveC = 0;
max = 0;
bool ok = false;
if (x == 1) {
return 1;
}
if (x == 2) {
return 0;
}
if (a[1] == 3) {
ok = SolveC(1);
}
else ok = SolveB(1);
for (int i = 1; i<=solveC; ++i) {
ok = (ok && SolveC(max));
}
return ok;
}
int main() {
FILE *f, *g;
f = fopen("perle.in","r");
g = fopen("perle.out","w");
fscanf(f,"%d\n", &n);
for (int i = 0; i<n; ++i) {
fscanf(f,"%d ", &x);
for (int j = 1; j<=x; ++j) {
fscanf(f, "%d \n", &a[j]);
}
fprintf(g,"%d\n",Solve());
}
fclose(f);
}