Pagini recente » Cod sursa (job #3206589) | Cod sursa (job #674476) | Cod sursa (job #3157769) | Cod sursa (job #1353570) | Cod sursa (job #560928)
Cod sursa(job #560928)
#include <fstream.h>
#include <string.h>
ifstream f("perle.in");
ofstream g("perle.out");
int L,VF,i,v[10001];
char perle[10001];
void actualizareB1()
{
perle[VF]='2'; perle[++VF]='B';
}
void actualizareB2()
{
perle[VF]='1'; perle[++VF]='A'; perle[++VF]='3'; perle[++VF]='A'; perle[++VF]='C';
}
void actualizareC1()
{
perle[VF]='2';
}
void actualizareC2()
{
perle[VF]='3'; perle[++VF]='B'; perle[++VF]='C';
}
void actualizareC3()
{
perle[VF]='1'; perle[++VF]='2'; perle[++VF]='A';
}
void actualizareTOTAL()
{
if(perle[i]=='C' && v[i]==1)
actualizareC3();
if(perle[i]=='C' && v[i]==3)
actualizareC2();
if(perle[i]=='B' && v[i]==1)
actualizareB2();
if(perle[i]=='B' && v[i]==2)
actualizareB1();
if(perle[i]=='C' && v[i]==2)
actualizareC1();
}
void prelucreaza()
{
VF=1;
if(L==1)
g<<"1";
if(L==2)
g<<"0";
if(L==3)
if(v[1]==1 && v[2]==2)
g<<"1";
else
g<<"0";
if(L>3)
{
switch(v[1])
{
case 2 : actualizareB1(); break;
case 1 : actualizareB2(); break;
case 3 : actualizareC2(); break;
}
i=1;
while(i<=L)
{
if(perle[i]=='B' && perle[i+1]=='C')
{
VF--;
if(v[i]==2)
actualizareB1();
if(v[i]==1)
actualizareB2();
perle[++VF]='C';
}
if(perle[i]=='C' && perle[i+1]=='C')
{
VF--;
if(v[i]==1)
actualizareC3();
if(v[i]==3)
actualizareC2();
if(v[i]==2)
actualizareC1();
perle[++VF]='C';
}
else
actualizareTOTAL();
i++;
}
if(VF==L)
g<<"1";
else
g<<"0";
}
g<<'\n';
}
int main()
{
int N,k,j;
f>>N;
for(k=1;k<=N;k++)
{
f>>L;
for(j=1;j<=L;j++)
f>>v[j];
prelucreaza();
}
return 0;
}