Cod sursa(job #2647021)

Utilizator euyoTukanul euyo Data 2 septembrie 2020 18:26:22
Problema Perle Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

ifstream fin( "perle.in" );
ofstream fout( "perle.out" );

const int MaxN = 10101;

int v[MaxN], k;

int okB( int pos );
int okC( int pos );

int okB( int pos ) {
  if ( pos > k ) {
	return 0;
  }
  if ( v[pos] == 2 ) {
    return okB( pos + 1 );
  }
  if ( v[pos] == 1 && v[pos + 2] == 3 && pos + 3 <= k ) {
	return okC( pos + 4 );
  }
  return 0;
}

int okC( int pos ) {
  if ( pos > k ) {
	return 0;
  }
  if ( v[pos] == 2 ) {
	return pos + 1;
  }
  if ( v[pos] == 3 ) {
	pos = okB( pos + 1 );
	if ( pos > 0 && pos <= k ) {
      return okC( pos );
	}
  }
  if ( v[pos] == 1 && v[pos + 1] == 2 && pos + 2 <= k ) {
	return pos + 3;
  }
  return 0;
}

int main() {
  int n;
  
  fin >> n;
  for ( int i = 1; i <= n; ++i ) { 
    fin >> k;
	for ( int j = 1; j <= k; ++j ) {
	  fin >> v[j];
	}
	if ( okB( 1 ) > k || okC( 1 ) > k || k == 1 ) {
	  fout << "1\n";
	} else {
	  fout << "0\n";
	}
  }
  fin.close();
  fout.close();
  return 0;
}