Cod sursa(job #1603905)

Utilizator eusebiu_gageaGagea Eusebiu-Andrei eusebiu_gagea Data 17 februarie 2016 20:18:50
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#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++;
}