Cod sursa(job #152428)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 9 martie 2008 14:18:52
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream.h>
#include <string.h>
#define MAX 10100

ifstream fin ("perle.in");
ofstream fout ("perle.out");
char a[MAX],sir[MAX];
int n,lg,ok;

void back(int k,char c)
{
   if (k==lg && c=='N')
   {
      ok=1;
      return ;
   }
   else
     if (k>lg)
	return;
   if (ok==0)
   {
   switch (c)
   {
      case 'A':
      {
	 back(k+1,'N');
	 break;
      }
      case 'B':
      {
	if (a[k]=='\x2')
	{
   //	   sir[k]='2';
	   back(k+1,'B');
 //	   sir[k]=0;
	}
	else
	  if (a[k]=='\x1' && a[k+2]=='\x3')
	  {
  //	     sir[k]='1';
  //	     sir[k+1]=a[k+1];
  //	     sir[k+2]=a[k+2];
  //	     sir[k+3]==sir[k+3];
	     back(k+4,'C');
	  }
	  break;
      }
      case 'C':
      {
	 if (a[k]=='\x2')
	 {
 //	   sir[k]='2';
	   back(k+1,'N');
	 }
	 else
	   if (a[k]=='\x3')
	   {
	      back(k+1,'B');
	      back(k+1,'C');
	   }
	   else
	     if (a[k]=='\x1' && a[k+1]=='\x2')
	     {
		back(k+3,'N');
	     }
	   break;
      }
      default :
      {
	int lol=0;
	lol++;
	break;
      }
   };
   }
}

void citire()
{
  fin>>n;
  fin.getline (a,100);
  for (int i=0;i<n;i++)
  {
     fin>>lg;
     char ca;
     a[0]=0;
     for (int j=0;j<lg;j++)
     {
	fin>>ca;
	a[j]=ca-'0';
     }
     ok=0;
     back(0,'A');
     if (ok==0)
	back(0,'B');
     if (ok==0)
	back(0,'C');
     fout<<ok<<"\n";
  }
}

int main ()
{
  citire();
  return 0;
}