Cod sursa(job #37804)

Utilizator crawlerPuni Andrei Paul crawler Data 25 martie 2007 12:39:55
Problema Bowling Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 10-a Marime 1.39 kb
#include <stdio.h>

#define Dim 10000 

char buf[Dim];
int poz = 0;

void cit(int &x)
{
     x=0;
     while (buf[poz]<'0'){
           poz++;
           if (poz==Dim) fread(buf, 1, Dim, stdin), poz=0;
     }
     while (buf[poz]>='0'){
           x=x*10+buf[poz++]-'0';
           if (poz==Dim) fread(buf, 1, Dim, stdin), poz=0;
     }
}

int a[50004][2], v[50004];

int main()
 {
   freopen("bowling.in","r",stdin);
   freopen("bowling.out","w",stdout);
 
   fread(buf, 1, Dim, stdin), poz=0;

   int t,i,j,n;

   cit(t);



   for(j=0;j<t;++j)
    {
     cit(n);
     for(i=1;i<=n;++i)
      cit(v[i]);

     a[n+1][0] = 0;
     a[n+1][1] = 0;
     a[n][0] = 0;
     a[n][1] = 1;
     

     for(i=n-1;i>=0;--i)
      if(v[i])
       {
        a[i][1] = !(a[i+1][0] | a[i+1][1]);

        if(v[i+1] == 1)
         a[i][0] = !(a[i+2][1] | a[i+2][0]);
          else
         a[i][0] = 0;


       }
        else
       {
        a[i][0] = a[i+1][0];
        a[i][1] = a[i+1][1];
       }

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

     if(a[1][1] | a[1][0])
      fputs("Nargy\n",stdout);
       else
      fputs("Fumeanu\n",stdout);
    }

   return 0;
 }