Cod sursa(job #2118973)

Utilizator MikeStrikeAgache Mihai MikeStrike Data 31 ianuarie 2018 14:24:05
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define NMAX (1<<30)
#include <vector>
using namespace std;
ifstream in("perle.in");
ofstream out("perle.out");
vector < int > v;
int n,t,x,pos;
void A();
void B();
void C();
void A()
{
    if(pos>=0) pos++;
}
void C()
{
    if(pos==-1) return;
    else
   if(v[pos]==1)
   {
       pos++;
       if(v[pos]!=2)
       {
           pos=-1;
           return;
       }
       pos++;
       A();
   }
   else
   {
       pos++;
       B();
       C();
   }
}
void B()
{
  if(pos==-1) return;
  if(v[pos]==2)
  {
      pos++;
      B();
  }
  else if(v[pos]==1)
  {
      pos++;
      A();
      if(v[pos]!=3)
      {
          pos=-1;
          return;
      }
      pos++;
      A();
      C();
  }
}

void rezolva(vector <int>& v)
{
   bool ok=false;
   pos=0;
   A();
   if(pos==v.size()) ok=true;
   pos=0;
   B();
   if(pos==v.size()) ok=true;
   pos=0;
   if(pos==v.size()) ok=true;
   out<<ok<<'\n';
}
int main()
{  in>>n;
for(int i=1;i<=n;i++)
  {
      v.clear();
      in>>t;
      for(int j=1;j<=t;j++)
      {
          in>>x;
          v.push_back(x);
      }
      rezolva(v);
  }
    return 0;
}