Pagini recente » Cod sursa (job #2565768) | Cod sursa (job #1032047) | Cod sursa (job #2216208) | Cod sursa (job #810421) | Cod sursa (job #744166)
Cod sursa(job #744166)
#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;
else
if(v[i] == 2) // B -> 2B
return M2(i+1);
else
if(v[i] == 1 && v[i+2] == 3 && i+4 <= L) // B -> 1A3AC
return M3(i+4);
else
return 0;
}
int M3(int i)
{
if( i > L)
return 1;
else
if(v[i] == 2) // C -> 2
return i+1;
else
if(v[i] == 1) // C -> 12A
return i+3;
else
if(v[i] != 3) // C -> 3BC
return 0;
i = M2(i+1);
if(i)
return M3(i);
else
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;
}