Pagini recente » Cod sursa (job #2638489) | Cod sursa (job #2388690) | Cod sursa (job #2818264) | Cod sursa (job #160521) | Cod sursa (job #234271)
Cod sursa(job #234271)
#include <cstdio>
int* ss, *f;
int* B(int*);
int* C(int*);
int* B(int* s)
{
if (s >= f || s < ss) return 0;
if (*s == 2) return B(s + 1);
if (*s == 1 && *(s + 2) == 3) return C(s + 4);
return 0;
}
int* C(int* s)
{
if (s < ss || s > f) return 0;
if (*s == 2) return s;
if (*s == 3) return C(B(s + 1) + 1);
if (*s == 1 && *(s + 1) == 2) return s + 2;
return 0;
}
int main()
{
int N, t, x[10003], i, j;
FILE *f1 = fopen("perle.in", "r"), *f2 = fopen("perle.out", "w");
fscanf(f1, "%d\n", &N);
for (i = 0; i != N; ++i) {
fscanf(f1, "%d ", &t);
for (j = 0; j != t; ++j)
fscanf(f1, "%d ", &x[j]);
ss = x;
f = x + t - 1;
fprintf(f2, "%d\n", (t == 1) || (B(x) == f) || (C(x) == f));
}
fclose(f1);
fclose(f2);
return 0;
}