Cod sursa(job #2209067)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 1 iunie 2018 17:33:19
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>

#define MAXN 10000

using namespace std;

int v[MAXN+5];

int transformB( int n, int i );
int transformC( int n, int i );

int transformB( int n, int i )
{
  if( i>n )
    return 0;

  if( v[i]==2 )
    return transformB(n,i+1);

  if( v[i]==1 && v[i+2]==3 )
    return transformC(n,i+4);

  return 0;
}

int transformC( int n, int i )
{
  if( i>n )
    return 0;

  if( v[i]==2 )
    return i+1;

  if( v[i]==3 )
    return transformC(n,transformB(n,i+1));

  if( i+1<=n && v[i]==1 && v[i+1]==2 )
    return i+3;

  return 0;
}

int main()
{
  freopen( "perle.in", "r", stdin );
  freopen( "perle.out", "w", stdout );

  int n;

  scanf( "%d", &n );

  while( n )
  {
    int l;

    scanf( "%d", &l );

    for( int i=1;i<=l;i++ )
      scanf( "%d", &v[i] );

    if( l==1 )
      printf( "1\n" );
    else
      if( transformB(l,1)==l+1 || transformC(l,1)==l+1 )
        printf( "1\n" );
    else
      printf( "0\n" );

    n--;
  }

  return 0;
}