Cod sursa(job #51683)

Utilizator chermanCorina Herman cherman Data 16 aprilie 2007 14:03:56
Problema Perle Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.17 kb
#include <stdio.h>
#include <string.h>

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

int n;
int a[11][10001];
int t=0;

void verifica(int i,int poz,char * s)
{
    int k=0;
    if (s[0]=='b')
    {
        if (poz<a[i][0])
        {
         switch (a[i][poz])
         {
           case 2:
              verifica(i,poz+1,"b");
              break;
           case 1:
              if (poz+4<=a[i][0] && a[i][poz+2]==3) verifica(i,poz+4,"c");
              break;
         }
        }
    }
    else
    if (s[0]=='c')
    {
        if (poz==a[i][0] && a[i][poz]==2) t=1;
        else
         if (poz<a[i][0])
         {
         switch (a[i][poz])
         {
           case 2:
              if (poz==a[i][0]) t=1;
              break;
           case 1:
              if (a[i][0]==poz+2 && a[i][poz+1]==2) t=1;
              break;
           case 3:
              verifica(i,poz+1,"bc");
              break;
         }
         }
    }

}

int main()
{
    fscanf(in, "%d", &n);

    for ( int i = 0; i < n; ++i )
        {
        fscanf(in, "%d", &a[i][0]);
        for ( int j = 1; j <=a[i][0]; ++j )
            fscanf(in, "%d", &a[i][j]);
        }

 printf("\n**************\n");
    for ( int i = 0; i < n; ++i )
    {
     for ( int j = 1; j <=a[i][0]; ++j )
      printf("%d ",a[i][j]);
    printf("\n");
    }
 printf("**************\n");

    for ( int i = 0; i < n; ++i )
    {
       t=0;
       if(a[i][0]==1)
       {
         fprintf(out, "%d\n",1);
         printf("\nrezultat %d\n",1);
       }
       else
       {
         t=0;
         switch (a[i][1])
         {
           case 2:
              verifica(i,2,"b");
              break;
           case 1:
              if (a[i][0]==3 && a[i][2]==2) t=1;
              else
              if (a[i][3]==3)
              {
                  verifica(i,5,"c");
              }
              break;
           case 3:
              verifica(i,2,"bc");
              break;
         }
         fprintf(out, "%d\n",t);
         printf("\nrezultat %d\n",t);
         printf("*************\n");
       }
    }
	return 0;
}