Cod sursa(job #941487)

Utilizator varga13VarGaz13 varga13 Data 18 aprilie 2013 22:05:24
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <fstream>
#include <cstdio>
using namespace std;

ifstream f("perle.in");
ofstream g("perle.out");

int B(int p),C(int p);
int m,n,aux[10005];

int main()
{
    bool ok=false; //debugg mode
    f>>n;
    if(!ok) g<<'\n';
    for(int i=0;i<n;i++)
    {
        f>>m;
        if(m==1)
        {
            f>>*aux;
            if(ok)g<<1; else {g<<'M';}

        }

        else
        {
            for(int j=0;j<m;j++)
                f>>aux[j];


            if(*aux==2)
            {
                if(B(1)>=m)
                    if(ok) g<<1; else {g<<"BB"<<B(1)<<' ';}
                else
                    if(ok) g<<0; else {g<<"01";}
            }
            else
            {

                if(B(0)>=m)
                    if(ok) g<<1; else {g<<"B"<<B(0)<<' ';}
                else if(C(0)>=m)
                    if(ok) g<<1; else {g<<"C"<<C(0)<<' ';}
                else
                    if(ok) g<<0; else {g<<"02";}
            }


            }
            g<<'\n';
    }
    f.close();
    g.close();
    return 0;
}

int B(int p)
{
    if(p>m-5) return 0;
    if(aux[p]==2)
        {
            p++;
            return B(p);
        }
    else if(*(p+aux)==1&&aux[p+2]==3)
    {
        p+=4;
        return C(p);
    }
    return 0;
}

int C(int p)
{
    if(p>m) return 0;
    if(aux[p]==2)
    {
        return p+2;
    }
    else if(aux[p]==3)
    {
        p++;
        if(C(B(p)))
        {
            return C(B(p));
        }
    }
    else if(p[aux]==1&&*(aux+p+1)==2)
        return p+4;

    return 0;
}