Cod sursa(job #2256855)
Utilizator | Data | 9 octombrie 2018 11:05:23 | |
---|---|---|---|
Problema | Perle | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 3.9 kb |
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream f("perle.in");
ofstream g("perle.out");
int t,T;
int i,DimMv,a,DimMr,k,ct;
f>>T;
for(t=1; t<=T; t++) ///Pt.fiecare test
{
f>>DimMr;
char r[10001]={0};
for(i=1; i<=DimMr; i++)
{
f>>a;
r[i]=a;///Vector de char
}
/*for(i=1; i<=DimMr; i++)
cout<<int(r[i]);
cout<<"\n";*/
if(DimMr==1)///solutia este A
g<<"1\n";
else
for(k=1; k<=2; k++)
{
char v[10001]={0};
r[0]=v[0]=':';
if(k==1)
v[1]='B';///Incercam sa plecam de la B sau de la C
else v[1]='C';
ct=1;
DimMv=1;
while(strcmp(v,r)!=0)
{
/*for(i=1; i<=DimMv; i++)
if(v[i]>10)
cout<<v[i];
else
cout<<int(v[i]);
cout<<"\n";*/
while(v[ct]<10 && ct<=DimMv)
ct++;///In sirul pe care il formam ( v) mergem la prima litera
if(ct>DimMv || DimMv>DimMr)
break;
if(v[ct]=='A')
{
v[ct]=r[ct];///Il tranformam pe A in cifra corespunzatoare
ct++;
}
else if(v[ct]=='B')
{
if(r[ct]==1)
{
DimMv=DimMv+4;
for(i=DimMv;i>=ct+5;i--)
v[i]=v[i-4];///Mutam vectorul cu 4 casute la dreapta
/// pentru a avea loc completarea lui B
v[ct]=1;ct++;
v[ct]='A';///Ducem ct-ul la prima litera
v[ct+1]=3;
v[ct+2]='A';
v[ct+3]='C';
}
else if(r[ct]==2)
{
DimMv++;
for(i=DimMv;i>=ct+2;i--)
v[i]=v[i-1];
v[ct]=2;ct++;
v[ct]='B';
}
else if(r[ct]==3)
{
break;
}
}
else if(v[ct]=='C')
{
if(r[ct]==1)
{
DimMv=DimMv+2;
for(i=DimMv;i>=ct+3;i--)
v[i]=v[i-2];
v[ct]=1;ct++;
v[ct]=2;ct++;
v[ct]='A';
}
else if(r[ct]==2)
{
v[ct]=2;
ct++;
}
else if(r[ct]==3)
{
DimMv=DimMv+2;
for(i=DimMv;i>=ct+3;i--)
v[i]=v[i-2];
v[ct]=3;ct++;
v[ct]='B';
v[ct+1]='C';
}
}
}
if(strcmp(v,r)==0)
{
g<<"1\n";
break;
}
else
{
g<<"0\n";
break;
}
}
}
f.close();
g.close();
}