Pagini recente » Cod sursa (job #370026) | Cod sursa (job #1111198) | Cod sursa (job #1096555) | Cod sursa (job #1677434) | Cod sursa (job #1354359)
#include <iostream>
#include <fstream>
#define inFile "perle.in"
#define outFile "perle.out"
using namespace std;
int n,k,x,pas;
void perle(int v[],int lucru[])
{
if(x==0) return;
if(lucru[x]=='B')
{
x--;
if(v[pas]==2)
{
pas++; x++; lucru[x]='B';if(pas==k){x=0;pas--;}perle(v,lucru);return;
}
if(v[pas]==1 && v[pas+2]==3)
{
pas+=4; x++; lucru[x]='C'; if(pas==k) {x=0;pas--;} perle(v,lucru);return;
}
}
else
if(lucru[x]=='C')
{
x--;
if(v[pas]==2)
{
pas+=1;
if(pas==k+1) pas--;
perle(v,lucru);return;
}
if(v[pas]==3)
{
pas++; x+=2; lucru[x-1]='C'; lucru[x]='B';if(pas==k) {x=0;pas-=2;} perle(v,lucru);return;
}
if(v[pas]==1 && v[pas+1]==2)
{
pas+=3;
if(pas==k+1) pas--;
perle(v,lucru);return;
}
}
}
int main()
{
int i,j;
ifstream fin(inFile);
ofstream fout(outFile);
fin>>n;
for(i=1;i<=n;i++)
{
int v[10001]={0},lucru[10001]={0};
x=0;
pas=1;
fin>>k;
for(j=1;j<=k;j++) fin>>v[j];
switch(k)
{
case 1: fout<<1<<"\n"; x=1; break;
case 2: fout<<0<<"\n"; break;
case 3: if(v[1]==1 && v[2]==2) fout<<1<<"\n"; else fout<<0<<"\n"; break;
}
if(k>3)
{
switch(v[1])
{
case 3: x++; lucru[x]='C'; perle(v,lucru); break;
case 1:
case 2: x++; lucru[x]='B'; perle(v,lucru);
}
if(x==0 && pas==k) fout<<1<<"\n";
else fout<<0<<"\n";
cout<<x<<pas;
}
}
fin.close();
fout.close();
}