Cod sursa(job #1919010)
Utilizator | Data | 9 martie 2017 17:40:37 | |
---|---|---|---|
Problema | Perle | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.24 kb |
#include <iostream>
#include <fstream>
using namespace std;
/*
A -> 1 | 2 | 3
B -> 2B | 1A3AC
C -> 2 | 3BC | 12A
*/
ifstream f("perle.in");
ofstream g("perle.out");
int n,i,v[10001],j,lv;
bool nrc;
int main()
{
f>>n;
for(i=0;i<n;i++)
{
bool gs=0;
f>>lv;
for(j=1;j<=lv;j++)
{
f>>v[j];
}
j=1;
if(lv==1)gs=1;///e A
else if(lv==3 && v[1]==1 && v[2]==2)gs=1;
else
{ ///incepe cu B
if(v[j]==3){j++;nrc=1;}
da:
while(v[j]==2)j++;
if(v[j]==1 && v[j+2]==3 && j<=lv-4)
{
j+=4;
while(v[j]==2)j++;
if(j==lv)gs=1;///daca C este 2
else if(v[j]==1)///daca C este 12A
{if(v[j+1]==2){gs=1;j+=2;}}
else if(v[j]==3 && j+2<=lv)///C este 3BC
{
j++;nrc=1;
goto da;
}
if(j==lv)gs=1;
if(nrc==1){
if(v[j]==2)goto da;///daca C este 2
else if(v[j]==1)///daca C este 12A
{if(v[j+1]==2)j+=2;nrc=0;goto da;}
else if(v[j]==3)///C este 3BC
{
j++;
}
nrc=0;
}
}
}
g<<gs<<'\n';
}
}