Pagini recente » Cod sursa (job #355269) | Cod sursa (job #641183) | Cod sursa (job #2249875) | Cod sursa (job #2641079) | Cod sursa (job #465992)
Cod sursa(job #465992)
#include<iostream.h>
long n,m,v[20001];
int test( int cine, int unde )
{
if( cine == 1 ) //A
{
if( unde == m )
return unde;
return 0;
}
if( cine == 2)// B -> 2B | 1A3AC
{
if( v[ unde ] == 3 ) return 0;
if( v[ unde ] == 1 )//1A3AC
{
if( m - unde < 4 ) return 0;
if( v[ unde + 2] != 3) return 0;
int w = test( 3 , unde + 4);
return w;
}
if( v[ unde ] == 2 ) //2B
{
if( m- unde < 1 ) return 0;
return test (2,unde +1);
}
}
if( cine == 3) // 2 // 12A
{
if( v[ unde ] == 2 )
return unde;
if( v[ unde ] == 1 )
{
if( m - unde < 2) return 0;
if( v[ unde + 1]!=2) return 0;
return test(1, unde +2);
}
if( v[ unde ] == 3 )//3 BC
{
if( m - unde < 2) return 0;
int poz = test( 2, unde + 1);
return test( 3, poz + 1);
}
}
}
int main()
{
freopen("perle.in","r",stdin);
freopen("perle.out","w",stdout);
cin>>n;
while(n)
{
cin>>m;
for(int i=1; i<=m; i++) cin>>v[i];
int p = (test( 1 , 1) == m) ;
p +=(test( 2, 1)== m) ;
p +=(test( 3 , 1) == m );
if( p >= 1)
cout<<1<<endl;
else cout<<0<<endl;
n--;
}
}