Cod sursa(job #1742446)
Utilizator | Tifui Ioan Alexandru tifui.alexandru | Data | 16 august 2016 14:37:46 |
---|---|---|---|
Problema | Perle | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.75 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int a[100001];
int v[100001];
bool rez(int k, char c, int x)
{ char z;
if(k>x) return false;
if(c=='A')
{
a[k]=v[k];
if(k-1==x) return true;
else return false;
}
if(c=='B')
{
if(v[k]==3) return false;
if(v[k]==2)
{
a[k]=2;
k++;
z='B';
return rez(k,z,x);
}
if(v[k]==1)
{
a[k]=1;
k++;
a[k]=v[k];
k++;
a[k]=3;
if(v[k]!=3) return false;
k++;
a[k]=v[k];
k++;
z='C';
return rez(k,z,x);
}
}
if(c=='C')
{
if(v[k]==2)
{
a[k]=2;
if(k==x) return true;
else return false;
}
if(v[k]==1)
{
a[k]=1;
k++;
a[k]=2;
if(v[k]!=2) return false;
k++;
a[k]=v[k];
}
if(v[k]==3)
{
a[k]=3;
k++;
z='B';
if(rez(k,z,x))
{
z='C';
return rez(k,z,x);
}
}
}
if(k>x) return false;
}
int main()
{
int n,l,i,j,r;
bool ok1,ok2,ok3;
f>>n;
for(j=1;j<=n;j++)
{
f>>l;
for(i=1;i<=l;i++)
f>>v[i];
char z='A';
int k=1;
ok1=rez(k,z,l);
z='B';
ok2=rez(k,z,l);
z='C';
ok3=rez(k,z,l);
r=ok1+ok2+ok3;
g<<r<<'\n';
}
return 0;
}