Pagini recente » Cod sursa (job #2399354) | Cod sursa (job #935900) | Cod sursa (job #2780353) | Cod sursa (job #45571) | Cod sursa (job #744167)
Cod sursa(job #744167)
#include <stdio.h>
#define FILEIN "perle.in"
#define FILEOUT "perle.out"
#define LMAX 10001
FILE *fout, *fin;
int N, L, v[LMAX];
int M3(int i);
int M2(int i)
{
if(i > L)
return 1;
if(v[i] == 2) // B -> 2B
return M2(i+1);
if(v[i] == 1 && v[i+2] == 3 && i+4 <= L) // B -> 1A3AC
return M3(i+4);
return 0;
}
int M3(int i)
{
if( i > L)
return 1;
if(v[i] == 2) // C -> 2
return i+1;
if(v[i] == 1 && v[i+1] == 2 && i+2 <= L) // C -> 12A
return i+3;
if(v[i] != 3) // C -> 3BC
return 0;
i = M2(i+1);
if(i)
return M3(i);
return 0;
}
int solve(int l)
{
if(l == 1 || M2(1) > l || M3(1) > l)
return 1;
else
return 0;
}
int main()
{
int i;
fin = fopen(FILEIN, "r");
fout = fopen(FILEOUT, "w");
fscanf(fin, "%d", &N);
for(; N; N--)
{
fscanf(fin, "%d", &L);
for ( i = 1; i <= L; i++)
fscanf(fin, "%d", &v[i]);
fprintf(fout, "%d\n", solve(L));
}
fclose(fin);
fclose(fout);
return 0;
}