Cod sursa(job #1794136)

Utilizator mitroalexandru mitrofan mitro Data 31 octombrie 2016 22:59:34
Problema Perle Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 2.19 kb
#include <stdio.h>
#include <stdlib.h>
int v[10001];
int a,l;
int prima(){
    //printf("%d %d\n",v[a],a);
    if(a>=l)
        return 0;
    else
    if(v[a]==2){
        a++;
        //printf("ccc");
        if(prima()==0)
            return 0;
    }else if (v[a]==1){
        a+=2;
        //printf("%d",v[a]);
        if(v[a]!=3)
            return 0;
        a+=2;
        printf("%d %d",v[a],a);
        if(doua()==0)
            return 0;

    }else return 0;
    return 1;
}
int doua(){
    if(a>=l)
        return 0;
    else
    if(v[a]==2 ){
        a++;
        printf(" %d ",a);
        return 1;
    }
    else if(v[a]==1 && v[a+1]==2){
            a+=3;
            return 1;
    }else if(v[a]==3){
            a++;

            if(prima()==0)
                return 0;
printf("%d %d  ",v[a],a);
            if(doua()==0)
                return 0;
    }
    return 1;
}
int main()
{   FILE *fin,*fout;
    int n,piv,j,i,r,d;
    fin=fopen("perle.in","r");
    fout=fopen("perle.out","w");
    fscanf(fin,"%d",&n);
    for(i=0;i<n;i++){
        fscanf(fin,"%d",&l);
        if(l>1){
            piv=1;
            for(j=0;j<l;j++){
                fscanf(fin,"%d",&v[j]);
                if(v[j]>3 || v[j]<1)
                    piv=0;
            }
            //printf("%d",n);
            if (piv==1){
                a=0;
                r=prima();
                //printf("%d ",r);
                if(r==1){
                    if(a<l)
                        r=0;
                }
                a=0;
                d=doua();
                //printf("%d",d);
                if(d==1){
                    if(a<l)
                        d=0;
                }
                if(d==1 || r==1)
                    fprintf(fout,"1\n");
                else
                    fprintf(fout,"0\n");

            }else fprintf(fout,"0\n");


        }else {
                fscanf(fin,"%d",&v[0]);
                if(v[0]==1 || v[0]==2 || v[0]==3 )
                    fprintf(fout,"1\n");
                else
                    fprintf(fout,"0\n");
        }
    }


    fclose(fin);
    fclose(fout);
    return 0;
}