Pagini recente » Cod sursa (job #2333296) | Cod sursa (job #3197059) | Cod sursa (job #2957653) | Cod sursa (job #3162959) | Cod sursa (job #3196682)
/// Aceasta sursa este pentru problema
/// https://www.infoarena.ro/problema/perle
/// Punctaj: 100
/// Grupa de seniori - Clasa a X-a
#include <fstream>
using namespace std;
int v[10010];
int n, t, i, A(), B(), C(), T;
int A()
{
if (i==n+1)
return 0;
if (v[i] == 1 || v[i] == 2 || v[i] == 3)
{
i++;
return 1;
}
else
return 0;
}
int B()
{
if (i==n+1)
return 0;
if (v[i] == 2)
{
i++;
return B();
}
else if (v[i] == 1)
{
i++;
int aux = A();
if (aux == 0)
return 0;
if (v[i] != 3)
return 0;
i++;
aux = A();
if (aux == 0)
return 0;
return C();
}
else
return 0;
}
int C() /// da rezultat 1 daca C poate genera restul de
{
/// sir incepand cu valoarea curenta a lui i
if (i==n+1)
return 0;
if (v[i] == 2)
{
i++;
return 1;
}
else if (v[i] == 1)
{
i++;
if (v[i] != 2)
{
i++;
return 0;
}
else
{
i++;
return A();
}
}
else
{
i++;
int aux = B();
if (aux == 0)
return 0;
return C();
}
}
int main ()
{
ifstream fin ("perle.in");
ofstream fout("perle.out");
for (fin>>T; T--; )
{
fin>>n;
for (i=1; i<=n; i++)
fin>>v[i];
i = 1;
int rez = A();
if (rez == 1 && i == n+1)
{
fout<<"1"<<'\n';
continue;
}
i = 1;
rez = B();
if (rez == 1 && i == n+1)
{
fout<<"1"<<'\n';
continue;
}
i = 1;
rez = C();
if (rez == 1 && i == n+1)
{
fout<<"1"<<'\n';
continue;
}
fout<<"0"<<'\n';
}
return 0;
}