Cod sursa(job #881432)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 17 februarie 2013 22:49:17
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.83 kb
#include<fstream>
#include<time.h>
using namespace std;
ifstream f("perle.in");
ofstream g("perle.out");
int a[11000];
int sy,rc=1,length=0;
void C();
void B();
void read_number(int& n)
{
    f>>n;
}
void read_array()
{
    int i;
    f>>length;
    for(sy=0;sy<length;sy++)
    {
        f>>a[sy];
    }
}
int inc()
{
    sy++;
    if(sy>length)
    {
       rc=0;
       return(1);
    }
    else
        return(0);
}
int is(int x)
{
    if(a[sy]==x)
    {
        if(inc()==1)
            return(0);
        else
            return(1);
    }
    else
    {
        return(0);
    }
}
void A()
{
    if(is(1)==0 && is(2)==0 && is(3)==0)
       rc=0;
}
void B()
{
    if(is(2))
    {
        B();
        return;
    }
    if(is(1))
    {
        A();
        if(!is(3))
        {
            rc=0;
            return;
        }
        A();
        C();
        return;
    }
    rc=0;
}
void C()
{
    if(is(2))
    {

        return;
    }
    if(is(1))
    {
        if(!is(2))
        {
           rc=0;
           return;
        }
        A();
        return;
    }
    if(is(3))
    {
        B();
        C();
        return;
    }
    rc=0;
}
int check()
{
    sy=0;
    rc=1;
    if(length==1)
    {
        A();
        return(rc);
    }
    if(length==3)
    {
        C();
        return(rc);
    }
    if(a[0]==2 || a[0]==1)
    {
        B();
        if(sy<length)
            rc=0;
        return(rc);
    }
    if(a[0]==3)
    {
        C();
        if(sy<length)
            rc=0;
        return(rc);
    }
}
int main()
{
    int n,i;
    read_number(n);
    for(i=0;i<n;i++)
    {
        read_array();
        g<<check()<<"\n";
    }
    clock_t end=clock();
    g<<"Duration "<<(end)/(CLOCKS_PER_SEC/1000);
}