Pagini recente » Cod sursa (job #3156883) | Cod sursa (job #294466) | Cod sursa (job #1788085) | Cod sursa (job #2753629) | Cod sursa (job #2154705)
#include <fstream>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int n,t,v[10009];
int p;
void read()
{
f >> n ;
for ( int i = 1 ; i <= n ; i ++ )
f >> v[i];
}
void rezC();
void rezB();
void rezA();
// A -> 1 | 2 | 3
void rezA()
{
if(p!=0)
p++;
}
// B -> 2B | 1A3AC
void rezB()
{
if(p==0)
return;
if(v[p]==2)
{
p++;
rezB();
}
else
if(v[p]==1)
{
p++;
rezA();
if ( v[p] != 3 )
{
p=0;
return;
}
p++;
rezA();
rezC();
}
else
p=0;
}
// C -> 2 | 3BC | 12A
void rezC()
{
if (p == 0)
return ;
if (v[ p ] == 2)
p ++ ;
else
if (v[ p ] == 1)
{
p ++ ;
if ( v[ p ] != 2)
{
p = 0;
return ;
}
p++;
rezA ();
}
else
if(v[p]==3)
{
p++;
rezB();
rezC();
}
else
{
p=0;
return;
}
}
void reC () {
if (p == 0)
return ;
if (v[ p ] == 2) {
++ p;
} else if (v[ p ] == 1) {
++ p;
if (v[ p ] != 2) {
p = 0;
}
++ p;
rezA ();
} else {
++ p;
rezB ();
rezC ();
}
}
void solve()
{
bool ok=0;
p=1;rezA();
if(p==n+1)
ok=1;
p=1;rezB();
if(p==n+1)
ok=1;
p=1;rezC();
if(p==n+1)
ok=1;
g << ok << '\n';
}
int main()
{
while ( t-- )
{
read();
solve();
}
return 0;
}