Pagini recente » Borderou de evaluare (job #2521569) | Cod sursa (job #21677) | Cod sursa (job #477187) | Cod sursa (job #1018322) | Cod sursa (job #1603905)
#include <fstream>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int n,p,m,s[10002];
void Transform_B();
void Transform_C();
int main()
{
int i,j,lg=1;
f>>n;
for(i=1; i<=n; i++)
{
f>>m;
lg=max(m,lg);
for(j=0; j<lg; j++)
s[j]=0;
for(j=0; j<m; j++)
f>>s[j];
/*for(j=0; j<lg; j++)
g<<s[j]<<' ';
g<<'\n';*/
p=0;
Transform_C();
g<<m<<' '<<p<<'\n';
}
return 0;
}
void Transform_B()
{
///g<<"B\n";
if(m-p>=5 && s[p]==1 && s[p+2]==3)
{
p+=4;
Transform_C();
}
else if(m-p>=6 && s[p]==2)
{
p++;
Transform_B();
}
}
void Transform_C()
{
///g<<"C\n";
if(m-p>=6 && s[p]==3)
{
p++;
Transform_B();
Transform_C();
}
else if(m-p>=5)
{
int q=p;
Transform_B();
if(q==p)
if(m-p>=3)
{
if(s[p]==1 && s[p+1]==2)
p+=3;
}
}
else if(m-p>=3)
{
if(s[p]==1 && s[p+1]==2)
p+=3;
}
else
p++;
}