Cod sursa(job #234271)

Utilizator Omega91Nicodei Eduard Omega91 Data 20 decembrie 2008 16:01:54
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#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;
}