Cod sursa(job #1304812)

Utilizator borcanirobertBorcani Robert borcanirobert Data 29 decembrie 2014 12:24:24
Problema Perle Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
using namespace std;

FILE *f = fopen( "perle.in", "r" );
FILE *g = fopen( "perle.out", "w" );

const int MAX = 10010;
int a[MAX];
int N, nn;
int nr;

int B( int poz );
int C( int poz );

int main()
{
    int i, j;

    fscanf( f, "%d", &N );
    for ( i = 1; i <= N; i++ )
    {
        fscanf( f, "%d", &nn );
        for ( j = 1; j <= nn; j++ )
        {
            fscanf( f, "%d", &a[j] );
            a[nr]++;
        }

        if ( nn == 1 || B(1) == nn + 1 || C(1) == nn + 1 )
            fprintf( g, "1\n" );
        else
            fprintf( g, "0\n" );
    }

    fclose(f);
    fclose(g);
    return 0;
}

int B( int poz )
{
    if ( poz > nn + 1 ) return nn + 2;
    if ( a[poz] == 2 ) return B( poz + 1 );
    if ( a[poz] == 1 && a[poz + 2] == 3 ) return C( poz + 4 );
    return nn + 2;
}

int C( int poz )
{
    if ( poz > nn + 1 ) return nn + 2;
    if ( a[poz] == 2 ) return poz + 1;
    if ( a[poz] == 3 ) return C( B( poz + 1 ) );
    if ( a[poz] == 1 && a[poz + 1] == 2 ) return poz + 3;
    return nn + 2;
}